যদি একটি অ্যাসিঙ্ক্রোনাস অনুরোধ সংযোগ খোলার আগেই সময় শেষ করে, তবে নেটওয়ার্ক টাইমআউটের পাশাপাশি ট্রান্সপোর্টের সক্রিয় সীমাগুলোও যাচাই করুন। সেই সীমাগুলো পূর্ণ থাকলে libcurl স্থানান্তরগুলো সারিতে রাখে, এবং সারিতে থাকার সময় তাদের টাইমআউট বাজেট চলতে থাকে।

Guzzle 7-এর শেয়ার করা cURL multi handler-এর জন্য:

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Handler\CurlMultiHandler;

$multi = new CurlMultiHandler([
    'options' => [
        CURLMOPT_MAX_TOTAL_CONNECTIONS => 24,
        CURLMOPT_MAX_HOST_CONNECTIONS => 4,
    ],
]);
$client = new Client([
    'handler' => HandlerStack::create($multi),
]);

এই ক্লায়েন্টটি অ্যাসিঙ্ক্রোনাস কাজের জন্য ব্যবহার করুন এবং অপারেশনগুলোতে এর উদ্দিষ্ট প্রক্সি অপশন সরবরাহ করুন। মানগুলো উদাহরণ বাজেট। পাবলিক মধ্যস্থতাকারীর মাধ্যমে অনুমোদিত পাবলিক অনুরোধের জন্য HTTP প্রক্সি তালিকা অপারেশনগুলোর প্রক্সি URL-এর জন্য প্রার্থী দেয়।

অপশনবাজেট
MAX_TOTAL_CONNECTIONSmulti handler-এর অধীনে একসাথে খোলা সংযোগ
MAX_HOST_CONNECTIONSএকটি হোস্ট/পোর্টে সংযোগ; প্রক্সি সংযোগ প্রক্সি এন্ডপয়েন্টের বিপরীতে গণনা করা হয়
MAXCONNECTSব্যবহারের পরে ক্যাশে রাখা সংযোগ

একই প্রক্সি ব্যবহার করা কয়েকটি ওয়েবসাইট স্বয়ংক্রিয়ভাবে আলাদা প্রক্সি সংযোগ অনুমতি পায় না। নিষ্ক্রিয় ক্যাশ ধারণক্ষমতা আগে থেকে সংযোগ খোলে না এবং সেগুলোকে বিনিময়যোগ্যও করে না: পুনরায় ব্যবহার রুট, গন্তব্য, প্রোটোকল ও প্রমাণীকরণের উপর নির্ভর করে।

অ্যাপ্লিকেশন টাস্ক বাজেট এবং যেকোনো প্রদানকারীর অনুমতি এই ট্রান্সপোর্ট বাজেটের সাথে সামঞ্জস্যপূর্ণ রাখুন। তারা সংযোগ গণনা করে, প্রতি সেকেন্ডে অনুরোধ নয়। সকেট টাইমআউট বাড়িয়ে সারি বা নেটওয়ার্ক অপেক্ষা সময় নিয়েছে কিনা তা চিহ্নিত করা যায় না।

সম্পর্কিত নিবন্ধ