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"。知道为什么这不起作用吗?
- PHP v:5.5.29
- MacOS 10.10.5
- "file" 命令的输出:
/Users/awallace/AccessLogs/access.log.6.gz: gzip compressed data, from
Unix, last modified: Wed Feb 24 23:35:20 2016
谢谢..
您关闭了循环内的句柄,因此在第二个循环迭代中 $handle
无效。
改为这样做:
$handle = gzopen( $filename, 'r');
while ( !gzeof($handle) )
{
$buffer = gzgets( $handle, 2048 );
if ( strpos($buffer, "Leadbuilder.") !== false )
{
print $buffer . "\n";
}
}
gzclose($handle);
我正在尝试使用 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"。知道为什么这不起作用吗?
- PHP v:5.5.29
- MacOS 10.10.5
- "file" 命令的输出:
/Users/awallace/AccessLogs/access.log.6.gz: gzip compressed data, from Unix, last modified: Wed Feb 24 23:35:20 2016
谢谢..
您关闭了循环内的句柄,因此在第二个循环迭代中 $handle
无效。
改为这样做:
$handle = gzopen( $filename, 'r');
while ( !gzeof($handle) )
{
$buffer = gzgets( $handle, 2048 );
if ( strpos($buffer, "Leadbuilder.") !== false )
{
print $buffer . "\n";
}
}
gzclose($handle);