Я пытаюсь создать анализатор журнала с использованием функций 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». Есть идеи, почему это не работает?
/Users/awallace/AccessLogs/access.log.6.gz: сжатые данные gzip, из
Unix, последнее изменение: ср 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);
Других решений пока нет …