getBody() mengembalikan antarmuka aliran bahkan ketika Guzzle sudah mengunduh responsnya. Untuk meminta pengiriman jaringan bertahap melalui proxy maju, setel stream pada permintaan:

$response = $client->request('GET', 'https://example.com/stream', [
    'proxy' => 'http://proxy.example:8080',
    'stream' => true,
    'read_timeout' => 10,
]);
$body = $response->getBody();

Ini menggunakan klien yang sudah ada; untuk endpoint HTTP publik, pilih alamat dari daftar proxy HTTP dan ganti URL proxy contoh. Dukungan streaming bergantung pada handler-nya; antarmuka aliran saja tidak dapat memberi tahu Anda apakah handler mengirimkan body secara bertahap.

Setelah respons tiba, teruskan membaca bagian yang terbatas. Mengubah $body menjadi string mengumpulkan seluruh body lagi. Parser baris juga bisa tampak macet saat menunggu baris baru, meskipun byte jaringan sudah tiba. Ini adalah penundaan konsumsi, jadi mengganti proxy tidak akan menghilangkannya.

read_timeout membatasi penantian baca individual di bawah implementasi aliran yang didukung. Ini tidak memberi feed tanpa akhir masa hidup total sepuluh detik. Tangani timeout, EOF, dan error secara terpisah, dan tutup body saat pemrosesan berakhir atau dibatalkan.

Artikel terkait