stream_set_timeout (fread 造成了php程序timeout)

最近在执行fread时候,php出现了 "Fatal error: Maximum execution time of 30 seconds

fread() :从文件指针 handle 读取最多 length 个字节。

handle:文件系统指针,是典型地由 fopen() 创建的 resource (资源)。

length:最多读取 length 个字节。

fread 一个远端文件的时候出现了超时,表示很头疼,但是最后用stream_set_timeout 暂时挂起了

下面是我的代码

    stream_set_timeout($fp, 2);  // 2秒后为超时
    $_data = fread($fp, $this->maxlength);
    $info = stream_get_meta_data($fp);
    fclose($fp);
    if ($info['timed_out']) {
        print_r($info); die();
    } else {
        print_r($_data);
    }

其中 $info 的信息如下:

Array
(
    [stream_type] => tcp_socket/ssl
    [mode] => r+
    [unread_bytes] => 0
    [seekable] => 
    [timed_out] => 1
    [blocked] => 1
    [eof] => 
)

// timed_out = 1 为超时   

ps: fread($fp,50000) 请求其他机子都是正常的(同样的配置),唯独我的机子出现了这个问题,表示很尴尬!~ 会不断的寻找解决方案,不过如果有哪个大侠能有什么好的点子,跪求~

原文地址:https://www.cnblogs.com/wilburxu/p/6183154.html