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çenekBütçe
MAX_TOTAL_CONNECTIONSMulti handler altında aynı anda açık bağlantılar
MAX_HOST_CONNECTIONSTek bir ana bilgisayara/bağlantı noktasına bağlantılar; proxy bağlantıları proxy uç noktasına sayılır
MAXCONNECTSKullanı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.

İlgili makaleler