Jika permintaan asinkron kedaluwarsa sebelum membuka koneksi, periksa batas aktif transport serta batas waktu jaringan. libcurl mengantrekan transfer ketika batas tersebut terpakai, dan anggaran batas waktunya terus berjalan selama dalam antrean.

Untuk handler cURL multi bersama 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),
]);

Gunakan klien ini untuk pekerjaan asinkron dan berikan opsi proxy yang dimaksudkan pada operasi. Nilainya adalah contoh anggaran. Untuk permintaan publik yang diizinkan melalui perantara publik, daftar proxy HTTP menyediakan kandidat untuk URL proxy operasi.

OpsiAnggaran
MAX_TOTAL_CONNECTIONSKoneksi terbuka bersamaan di bawah handler multi
MAX_HOST_CONNECTIONSKoneksi ke satu host/port; koneksi proxy dihitung terhadap endpoint proxy
MAXCONNECTSKoneksi yang dipertahankan di cache setelah digunakan

Beberapa situs web yang memakai proxy yang sama tidak otomatis memperoleh jatah koneksi proxy terpisah. Kapasitas cache menganggur tidak membuka koneksi lebih dulu dan tidak membuatnya dapat dipertukarkan: penggunaan ulang bergantung pada rute, tujuan, protokol, dan autentikasi.

Jaga anggaran tugas aplikasi dan jatah penyedia apa pun tetap konsisten dengan anggaran transport ini. Keduanya menghitung koneksi, bukan permintaan per detik. Menaikkan batas waktu soket tidak dapat mengidentifikasi apakah antrean atau penantian jaringan yang menghabiskan waktu.

Artikel terkait