[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
PHPで、ページがリクエストされ、PHPスクリプトが動作してから、応答を返すまでの処理時間を計算する。(ミリ秒単位で計算。)サーバまでの到達時間やクライアントまでの到達時間は除く。
全てのページに共通して埋め込んでおけば、どのページが遅いか簡単にわかるので、大変役に立つ。
概略:
開始時に microtime(TRUE)で float値 (sec.msec)を保持。
終了時も同様に取得し、差を計算。これだけ。
【注意】PHPマニュアル見ればわかるけど、「microtime関数は、gettimeofday() システムコールをサポートする オペレーティングシステムでのみ使用できる」です。
//----------
<?php
//開始
$time_start = microtime(TRUE);
//
//何かの処理
//
//終了
$time_end = microtime(TRUE);
//終了-開始
$time = $time_end - $time_start;
//表示してみる
printf("%040.25f</br>", $time_start);
printf("%040.25f</br>", $time_end);
printf("%040.25f</br>", $time);
?>
//----------
やりたいことは以下。
・メール受信→メール内容をPHPで処理
(1) .forward の登録
メールを転送するのに使うものだが、パイプによりプログラムとかに内容を渡せる。
(例)
"|/usr/bin/php /www/html/hoge.php"
これでメール受信したとき、phpコマンドにより、hoge.phpが実行される。
(2) hoge.php の先頭に #!/usr/bin/php -q と書く
(例)
#!/usr/bin/php -q
<?php
...
?>
これでPHPコマンドラインインターフェースで実行される。"-q" でHTTPヘッダを抑制。
(3) PHPで受信メール内容を読み取る方法
標準入力で渡されるので、標準入力の読取と同じ。
(例)
if(($stdin=fopen("php://stdin",'r') )!==FALSE ) {
while( !feof($stdin) ) {
$line = fgets($stdin, 4096);
}
fclose($stdin);
}
※メールを送りつけて動作を確認するも、動く形跡なし。。
調べたところ、.forwardのパイプ渡しで実行できるコマンドが "smrsh"という
やつで制限されているようだ。
環境によって設定場所はことなるようだが、うちは、以下でできた
/etc/smrsh のディレクトリにphpのコマンドを置く(シンボリックリンクで良い)
(例)
#cd /etc/smrsh
#ln -s /usr/bin/php