Произошел тайм-аут потока перехвата PHP
Я использую функцию PHP Fread для чтения данных из потока, открытого с
$fh=fopen('http://.....');
я установил таймаут для потока с
socket_set_timeout($fh,10);
если тайм-аут произошел во время исполнения фреда, могу ли я как-то узнать об этом?
$contents = fread($fh, 1024);
если тайм-аут случится, будет ли $content равной пустой строке или FALSE? как узнать, что тайм-аут произошел? есть ли способ?
2 ответа
Согласно странице документа для этой функции:
Когда время ожидания истекает, ключ 'timed_out' массива, возвращаемого функцией stream_get_meta_data(), устанавливается в значение TRUE, хотя сообщение об ошибке или предупреждение не генерируется.
Таким образом, нет ошибок / предупреждений, но проверяются выходные данные stream_get_meta_data
даст вам подсказку.
fread() вернется ''
(пустая строка), когда тайм-аут происходит в отличие socket_read()
который возвращается false
,