2015-08-31 28 views
0

我想從我的CentOS服務器打開並讀取mysql錯誤日誌文件。是否有可能通過PHP讀取和輸出該文件的最後15行? /var/lib/mysql/{SERVER_NAME}.err如何通過PHP打開並輸出mysql日誌文件的最後15行?

我曾嘗試以下

<?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

因爲錯誤日誌文件的大小几乎是1GB。那我該如何解決這個問題呢? 我需要檢查這個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「,你也可以將其輸出重定向到其他文本文件中......你也可以每5秒鐘對它進行一次cron分鐘... –

+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

相關問題