« CGI::Session での IPMatch の処理 | メイン | あけましておめでとうございます »

2009年12月31日

PHP / ファイルの最後からn行を取得する >>PHP 

exec tail してやれば簡単だけど、PHPでゴリゴリ書くとこんな感じ。low memoryなマシンとかでどうぞ。メモリ内に格納しないでpointerを書いたファイルを一時的に生成する手もありますが、その辺りは環境に合わせて応用してください。


$pointer = 1000;

$handle = @fopen("testline.txt", "r");
$seek_pointer = array();

if ($handle) {
$line = 0;
while (!feof($handle)) {
$seek_pointer[$line] = ftell($handle);
$buffer = fgets($handle);
$line++;
}

if ($pointer < $line)
{
$seek_target = $seek_pointer[ abs($pointer - $line) - 1 ];
}
else
{
$seek_target = 0;
}

$array_lists = array();
fseek($handle, $seek_target);
while (!feof($handle))
{
$array_lists[] = fgets($handle);
}

fclose($handle);
}

twitterこの記事をTwitterでみんなに教える。

投稿者 debizoh : 2009年12月31日 23:49



トラックバック

現在、この記事はトラックバックを受け付けておりません。


コメント

現在、この記事はコメントを受け付けておりません。