Зошто Guzzle-овиот тек на телото сè уште може да се баферира
Интерфејсот на телото, доставата преку транспортот и вашиот сопствен парсер можат независно да баферираат. Користете stream експлицитно и одржувајте го консумирањето постепено.
getBody() враќа интерфејс на тек дури и кога Guzzle веќе го презел одговорот. За да побарате постепена мрежна достава преку напреден прокси, поставете stream на барањето:
$response = $client->request('GET', 'https://example.com/stream', [
'proxy' => 'http://proxy.example:8080',
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
Ова користи постоечки клиент; за јавен HTTP крајна точка изберете адреса од списокот на HTTP прокси и заменете ја примерната прокси URL. Поддршката за стриминг зависи од неговиот обработувач; само интерфејсот на тек не може да ви каже дали обработувачот го доставил телото постепено.
Откако одговорот ќе пристигне, продолжете да читате ограничени делови. Претворањето на $body во низа повторно го собира целото тело. Парсерот на линии исто така може да изгледа заглавен додека чека нова линија, иако мрежните бајти пристигнале. Тоа се доцнења при консумирање, така што менувањето на проксито нема да ги отстрани.
read_timeout ги ограничува поединечните чекања за читање во рамките на поддржаната имплементација на тек. Не му дава на бесконечниот тек вкупно времетраење од десет секунди. Работете со тајмаут, EOF и грешки одделно и затворете го телото кога обработката завршува или е откажана.