Bir Guzzle isteği bağlantı yuvası beklerken zaman aşımına uğrayabilir
cURL multi'nin etkin bağlantı bütçelerini paylaşılan handler üzerinde ayarlayın ve bunları boştaki önbellek kapasitesinden ayırın.
Eşzamansız bir istek bağlantı açmadan önce zaman aşımına uğrarsa, ağ zaman aşımlarının yanı sıra taşıyıcının etkin sınırlarını da inceleyin. libcurl bu sınırlar dolu olduğunda aktarımları kuyruğa alır ve kuyrukta beklerken zaman aşımı bütçeleri işlemeye devam eder.
Guzzle 7'nin paylaşılan cURL multi handler'ı için:
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),
]);Eşzamansız iş için bu istemciyi kullanın ve işlemlere amaçlanan proxy seçeneğini verin. Değerler örnek bütçelerdir. Genel bir aracı üzerinden izin verilen genel istekler için HTTP proxy listesi, işlemlerin proxy URL'leri için adaylar sağlar.
| Seçenek | Bütçe |
|---|---|
| MAX_TOTAL_CONNECTIONS | Multi handler altında aynı anda açık bağlantılar |
| MAX_HOST_CONNECTIONS | Tek bir ana bilgisayara/bağlantı noktasına bağlantılar; proxy bağlantıları proxy uç noktasına sayılır |
| MAXCONNECTS | Kullanımdan sonra önbellekte tutulan bağlantılar |
Aynı proxy'yi kullanan birkaç web sitesi otomatik olarak ayrı proxy bağlantı kotaları almaz. Boştaki önbellek kapasitesi ne bağlantıları önceden açar ne de onları birbirinin yerine geçebilir kılar: yeniden kullanım rotaya, hedefe, protokole ve kimlik doğrulamaya bağlıdır.
Uygulamanın görev bütçesini ve varsa sağlayıcı kotasını bu taşıma bütçeleriyle tutarlı tutun. Bunlar bağlantıları sayar, saniyedeki istekleri değil. Soket zaman aşımını artırmak, zamanı kuyruğun mu yoksa ağ beklemesinin mi tükettiğini belirleyemez.