Web系のこととかー。

phptop = どのPHPに時間や負荷がかかっているか見られる

ちょっと前に少し話題になったPHPをスクリプト毎(URIベース)で、topコマンド風に状況が見られるphptopを動かしてみた。

必要な環境

phptopのwikiにはphptop requires at least PHP >= 4.3.10 or PHP >= 5.0.3.って書いてあるけど、PHP5.2からの関数 memory_get_peak_usage() を使ってメモリ使用量を取得しているので、PHP5.2.0以上は必要。と思う。というか、5.1以下ではエラーで動かなかった。

なお、Term::Sizeモジュールを使用しているので、CPANからインストールしておくこと。

設定

/etc/php.ini

log_errors=on
auto_prepend_file=/usr/local/src/phptop_hook.php

/usr/local/src/phptop

#118行目あたり・単純にコメントアウトしても動くみたい
#setlocale(POSIX::LC_NUMERIC, 'C'); # Use . as decimal separator
setlocale(LC_NUMERIC, 'C'); # Use . as decimal separator

#355行目あたり
#push(@log, '/var/log/apache2/error*log', '/var/log/apache2/*/error*log') if !@log;
push(@log, '/var/log/httpd/*error_log', '/var/log/httpd/*/error_log') if !@log;

Apacheのエラーログの場所は適宜変更。Apacheエラーログに、phptop_hook.phpを通じてデータを吐き出す仕様になっている。

使用方法

php.iniを変更したので、Apacheを再起動後、PHPスクリプトへアクセスをする。Apacheのエラーログにデータが書き出されているのを確認したら、下記コマンドにてデータが出力される。

$./phptop -t 15 -s mem

No phptop records found. と出たら、正常にデータが取れていないので、エラーログを確認したり、php.iniが反映されているか確認する。

これを実践的に使う機会は、あまりないと思うけど(誰かが作った謎なシステムを別の側面から把握するためとか?)なかなか面白いなーと思った。

§265 · 12月 21, 2010 · サーバ_Linux_Windows, プログラミング_PHP · · [Print]

Leave a Reply