我使用 PHP 函数 fread 从打开的流中读取数据
$fh=fopen('http://.....');
我设置了流的超时时间
socket_set_timeout($fh,10);
如果在 fread 执行期间发生超时,那么我能以某种方式知道这一点吗?
$contents = fread($fh, 1024);
如果发生超时,那么 $contents 将等于空字符串还是 FALSE ?如何知道发生了超时?有办法吗?
我使用 PHP 函数 fread 从打开的流中读取数据
$fh=fopen('http://.....');
我设置了流的超时时间
socket_set_timeout($fh,10);
如果在 fread 执行期间发生超时,那么我能以某种方式知道这一点吗?
$contents = fread($fh, 1024);
如果发生超时,那么 $contents 将等于空字符串还是 FALSE ?如何知道发生了超时?有办法吗?
根据该功能的文档页面:
当流超时时,stream_get_meta_data() 返回的数组的 'timed_out' 键设置为 TRUE,但不会生成错误/警告。
所以没有产生错误/警告,但检查输出stream_get_meta_data
会给你一个线索。
当发生超时时, fread() 将返回''
(空字符串),socket_read()
这与返回不同false
。