gzopen 为现有的有效文件抛出异常

gzopen throwing exception for existing, valid file

我正在尝试使用 zLib 函数构建日志解析器,但 运行 遇到了问题。这是我的代码:

$filename = '/Users/awallace/AccessLogs/access.log.6.gz';

$handle = gzopen( $filename, 'r');

while ( $buffer = gzgets( $handle, 2048 ) )
{
    if ( strpos($buffer, "Leadbuilder.") !== false )
    {
        print $buffer . "\n";
    }

    gzclose($handle);
}

(我删除了错误检查代码)。当我 运行 这个时,我收到警告:

 Warning: gzgets(): 5 is not a valid stream resource in /Users/awallace/test.php on line 22

如果我在 gzopen 之后转储句柄,我得到:"Resource id #5"。知道为什么这不起作用吗?

谢谢..

您关闭了循环内的句柄,因此在第二个循环迭代中 $handle 无效。

改为这样做:

$handle = gzopen( $filename, 'r');        
while ( !gzeof($handle) )
{
    $buffer = gzgets( $handle, 2048 );

    if ( strpos($buffer, "Leadbuilder.") !== false )
    {
        print $buffer . "\n";
    }
}
gzclose($handle);