需要在php函数上设置超时,如fopen、file_get_contents和fread

需要在php函数上设置超时,如fopen、file_get_contents和fread,php,Php,因为套接字/流等待时间不包括在PHP最大执行时间中。 为了提高服务器性能, 我需要为fopen、file\u get\u内容和fread函数设置超时 如果它们没有在PHP执行时间内处理。 我试过下面的例子 节目: $fileName = 'C:/svn/trunk/storage/invoices/BAI_Export.txt'; $fp = fopen( $fileName, 'rb' ); if( !$fp ) { echo "Unable

因为套接字/流等待时间不包括在PHP最大执行时间中。 为了提高服务器性能, 我需要为fopen、file\u get\u内容和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 );
        }
    }
**输出:**

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
 )
在输出中,“超时”参数变为空。
请告诉我是否有其他解决方案。

也许您可以使用以下方法

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

我需要在60秒内完成所有执行,有时这些PHP函数发送响应可能需要更多时间。我需要在60秒内完成它的所有执行,否则,PHP函数会给出超时错误。我知道在45秒内,您已经将其设置为20。我认为60秒是30秒。我在stream_set_timeout函数中只设置了2秒的超时。在调用这段代码之前,我还执行了其他PHP操作。