یک درخواست Guzzle ممکن است هنگام انتظار برای جایگاه اتصال منقضی شود
بودجههای اتصال فعال cURL multi را روی هندلر مشترک تنظیم کنید و آنها را از ظرفیت کش بیکار تفکیک کنید.
اگر یک درخواست ناهمگام پیش از بازکردن اتصال منقضی شود، محدودیتهای فعال انتقالدهنده را در کنار مهلتهای شبکه بررسی کنید. libcurl زمانی که این محدودیتها اشغال باشند انتقالها را در صف میگذارد و بودجه مهلت آنها در حین صف ماندن ادامه مییابد.
برای هندلر مشترک cURL multi در Guzzle 7:
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_CONNECTIONS | اتصالات باز همزمان زیر هندلر multi |
| MAX_HOST_CONNECTIONS | اتصالات به یک میزبان/درگاه؛ اتصالات پراکسی علیه نقطه پایانی پراکسی شمرده میشوند |
| MAXCONNECTS | اتصالاتی که پس از استفاده در کش نگه داشته میشوند |
چند وبسایت که از یک پراکسی استفاده میکنند بهطور خودکار سهمیههای جداگانه اتصال پراکسی دریافت نمیکنند. ظرفیت کش بیکار نه از پیش اتصال باز میکند و نه آنها را قابل تبادل میسازد: استفاده مجدد به مسیر، مقصد، پروتکل و احراز هویت بستگی دارد.
بودجه وظایف برنامه و هر سهمیه ارائهدهنده را با این بودجههای انتقال سازگار نگه دارید. آنها اتصالها را میشمارند، نه درخواست در ثانیه. افزایش مهلت سوکت نمیتواند مشخص کند که صف یا انتظار شبکه زمان را مصرف کرده است.