Произошел тайм-аут потока перехвата 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,

Другие вопросы по тегам