исключение gzopen для существующего действительного файла

Я пытаюсь создать анализатор журнала с использованием функций 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, из
    Unix, последнее изменение: ср 24 фев 23:35:20 2016

Спасибо..

1

Решение

Вы закрываете дескриптор внутри вашего цикла, поэтому на второй итерации цикла $handle является недействительным.

Вместо этого сделайте это:

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]