Guzzle অনুরোধের জন্য প্রক্সি IP সেট করুন
Guzzle-এর প্রতি-অনুরোধ proxy বিকল্প, handler-নির্ভর সংযোগের সময়সীমা ও স্পষ্ট বাইপাস তালিকার আচরণ বুঝুন।
Guzzle-এর proxy বিকল্প সম্পূর্ণ এন্ডপয়েন্ট URL গ্রহণ করে। শুধু ওই কাজ নির্বাচিত IP ব্যবহার করলে অনুরোধে এটি সেট করুন।
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://example.com/', [
'proxy' => 'http://203.0.113.10:8080',
'connect_timeout' => 5,
'timeout' => 15,
'http_errors' => false,
]);
echo $response->getStatusCode(), PHP_EOL;
echo (string) $response->getBody();
উদাহরণ ধরে নেয় Guzzle 7 Composer দিয়ে ইনস্টল আছে। নথির ঠিকানার বদলে সরবরাহকারী বা HTTP প্রক্সির তালিকার প্রকৃত HTTP প্রক্সি দিন। গন্তব্য অনুরোধের URL-এ রাখুন: প্রক্সি মধ্যস্থতাকারী, ডাউনলোড হওয়া সম্পদ নয়।
এখানে http_errors false যাতে HTTP ত্রুটির উত্তর পরীক্ষার জন্য থাকে। সংযোগ ব্যর্থতা এখনও স্থানান্তর ব্যতিক্রম ছোড়ে। তাই স্থাপনের সময় প্রত্যাখ্যাত HTTPS টানেল সাধারণ সাইটের উত্তর অবজেক্ট পাওয়ার আগেই ব্যর্থ হতে পারে।
সংযোগসীমা অন্যরকম হলে handler দেখুন
Guzzle বিভিন্ন HTTP handler ব্যবহার করতে পারে। নথি অনুযায়ী অন্তর্নির্মিত cURL handler connect_timeout সমর্থন করে। নিজস্ব handler বা PHP cURL ছাড়া পরিবেশ সমতুল্য নাও হতে পারে। নকল করা সময়সীমা কাজ করছে ভাবার আগে অ্যাপের handler দেখুন।
সামগ্রিক timeout সেট করাও ভালো। বিনামূল্যের তালিকার এন্ট্রি দুই পরীক্ষার মাঝে সাড়া দেওয়া বন্ধ করতে পারে, আর ডিফল্ট মান দ্রুত শেষ হওয়া দরকার এমন অনুরোধের উপযোগী সময়সীমা নয়।
প্রক্সি ম্যাপ ব্যবহার
ম্যাপ গন্তব্যের scheme অনুযায়ী পথ বেছে নিতে ও বাইপাস হোস্ট স্পষ্ট দিতে দেয়:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
স্ট্রিং বিকল্পের বদলে এই অ্যারে নিন। HTTPS কী HTTPS গন্তব্য বেছে নেয়; তার HTTP মান এখনও প্রক্সি listener বোঝায়। আলাদা listener প্রোটোকলে আলাদা এন্ডপয়েন্ট কনফিগারেশন লাগে।
অনুরোধের proxy বিকল্প নিজে দিলে Guzzle চায় প্রয়োজনীয় no মানও আপনি দিন; NO_PROXY থেকে আপনাআপনি নকল করে না। খালি তালিকা বিচ্ছিন্ন প্রক্সি পরীক্ষার জন্য উপকারী। অ্যাপে ইচ্ছাকৃত বাইপাস নিয়ম থাকলে সেগুলো স্পষ্টভাবে রাখুন।