Я использую fsockopen
для подключения к диспетчеру OpenVAS и отправки XML. Код, который я использую:
$connection = fsockopen('ssl://'.$server_data['host'], $server_data['port']);
stream_set_timeout($connection, 5);
fwrite($connection, $xml);
while ($chunk = fread($connection, 2048)) {
$response .= $chunk;
}
Однако после чтения первых двух фрагментов данных PHP зависает на fread и не истекает через 5 секунд. Я пытался использовать stream_get_contents
, что дает тот же результат, НО, если я использую только один fread, он работает нормально, просто я хочу прочитать все, независимо от длины.
Я предполагаю, что это проблема с OpenVAS, который не завершает поток так, как этого ожидает PHP, но это выстрел в темноту. Как читать поток?