需要在php函数上设置Timeout,如fopen,file_get_contents和fread

时间:2018-06-07 09:30:43

标签: php

由于套接字/流等待时间不包含在PHP最大执行时间内。 为了提高服务器性能, 我需要为fopen,file_get_contents和fread函数设置超时 如果他们不在PHP执行时间内处理。 我试过以下的例子     的程序:

    $fileName = 'C:/svn/trunk/storage/invoices/BAI_Export.txt';
    $fp       = fopen( $fileName, 'rb' );
    if( !$fp ) {
        echo "Unable to open\n";
    }else {
        stream_set_timeout( $fp, 2 );
        $res = fread( $fp, filesize( $fileName ) );
        $info = stream_get_meta_data( $fp );
        fclose( $fp );
        if( $info['timed_out'] ) {
            echo 'Connection timed out!';
        }else {
            var_dump( $info );
        }
    }

** OutPut:**

Array
(
    [timed_out] => 
    [blocked] => 1
    [eof] => 
    [wrapper_type] => plainfile
    [stream_type] => STDIO
    [mode] => rb
    [unread_bytes] => 0
    [seekable] => 1
    [uri] => C:/svn/trunk/storage/invoices/BAI_Export.txt
 )

在输出中,“time_out”参数变为空。 如果有替代解决方案,请告诉我。

1 个答案:

答案 0 :(得分:0)

也许你可以以下

set_time_limit(0); # If set to zero, no time limit is imposed.