2009年12月16日

[PHP-users 34880] Re:ファイルの逆読みの方法に関して

松木薗と申します。

> $_log = file("/hogehoge/Apllog.log");
> $log = array_splice($_log, 1, count($_log)-1000);
file関数はファイル「全部を一気に」読み込む関数なのでメモリオーバーになります。

fopenで回して読み込んでみて下さい。
参考:PHPでテキストファイル等を開き、一行ずつ読み込む

http://phpnet.blog91.fc2.com/blog-entry-17.html

*==*==*==*==*==*
松木薗 暢哉 (Nobuya MATSUKIZONO)
E-mail: zeathwing@xxxxx

2009/12/16 岸本 弥生 <yayoi@xxxxx>:
> はじめまして、岸本と申します。宜しくお願いします。
> 現在下記の現象で困っています、助言いたたければ幸いです。
>
>
> 開発を担当しているシステムでアプリケーションログを出力しています。
> そのログファイルを表示するWEBアプリを作成しているのですが、ログファイルの
> 容量が大き過ぎてphpがメモリオーバで終了してしまいます。
>
> エラー内容:
> Allowed memory size of 134217728 bytes exhausted
>
> そこで、最新から遡って1000行まで表示する様に変更したいのですが、どうしても
> ファイル全体を一旦読み込まないとならずにエラーを回避できません。
> できればファイルを逆読みして1000行目で読み込みを中断して表示させたいのですが
> 苦心しています。
>
> ちなみに下記が現行のコードです。(一行目のfile関数でアウトです)
>
> $_log = file("/hogehoge/Apllog.log");
> $log = array_splice($_log, 1, count($_log)-1000);
>
> ログファイルはlogrotateで肥大化しない様に工夫してあります。
>
> 極力memory_limitの値は変更せずに対応したいのですが、、
> ヒントでも構いませんので宜しくお願いします。
>
> 以上
> _______________________________________________
> PHP-users mailing list PHP-users@xxxxx
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2009年12月16日 01:10
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/91444
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。