我正在尝试使用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之后转出句柄,我得到:"资源ID#5"。知道为什么这不起作用吗?
/Users/awallace/AccessLogs/access.log.6.gz:gzip压缩数据,来自 Unix,最后修改时间:2016年2月24日星期三23:35:20
谢谢..
答案 0 :(得分:2)
关闭循环内的句柄,因此在第二个循环迭代$handle
无效。
而是这样做:
$handle = gzopen( $filename, 'r');
while ( !gzeof($handle) )
{
$buffer = gzgets( $handle, 2048 );
if ( strpos($buffer, "Leadbuilder.") !== false )
{
print $buffer . "\n";
}
}
gzclose($handle);