2015-08-31 1 views
0

Я хочу открыть и прочитать файл журнала ошибок mysql с моего сервера CentOS. Можно ли читать и выводить последние 15 строк этого файла, хотя PHP? /var/lib/mysql/{SERVER_NAME}.errКак открыть и вывести последние 15 строк из файла журнала mysql через PHP?

Я попытался следующие

<?php 
$file = '/var/lib/mysql/myserver_name.com.err'; 

$filearray = file($file); 
$lastfifteenlines = array_slice($filearray,-15); 
var_dump($lastfifteenlines); 
?> 

Но это показывает

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 854157212 bytes) in /home/myserver_name/public_html/test.php on line 4

Поскольку ошибка размер файла журнала почти 1 Гб. Итак, как я могу решить эту проблему? мне нужно проверить этот файл журнала MySQL в каждые 5 мин

Мое требование делает то же самое, как chkservd делает в CPanel

+2

[хвост functionality- in-php] (http://tekkie.flashbit.net/php/tail-functionality-in-php) – amdixon

+0

Вы можете сделать это непосредственно с сервера командой tail - «tail -n15 /var/log/myserver.com .err "вы также можете перенаправить свой вывод в какой-либо другой текстовый файл ... вы также можете cron его на каждые 5 минут ... –

+0

@amdixon Спасибо, что работает –

ответ

0

использование FSEEK, пример:

function tail($filename, $n = 10) { 
    $file = fopen($filename,'r'); 
    fseek($file, $n*1024*-1,SEEK_END); 
    while ($line = fgets($file)) { 
     $lines[] = trim($line); 
    } 
    return array_slice($lines, -$n); 
} 
+0

Это решение предполагает, что строка имеет менее 1024 символов. – nhahtdh

Смежные вопросы