%{mod_php_memory_usage}n
使用最大メモリのログ出力の追加。--enable-memory-limitを使用し、Apache 1.xの設定ファイルのログ出力フォーマット命令(LogFormat)に "%{mod_php_memory_usage}n"を追加することでスクリプトが使用した 最大メモリサイズが分かるようになった。 (Thies)
どうやら本気で怒らせたいらしい。。。(--メ
確かに4.1では正しく動きました。。。が、4.4だと全く動いていないんですけど何か?
ずーーーーーーっと、0しか記録されないんですけど?┐( ̄ヘ ̄)┌
先日の件に引き続き、やっつけで以下パッチを敢行。
これで(一応)記録されるようになりました。
diff -urN php-4.4.7,orig/sapi/apache/mod_php4.c php-4.4.7/sapi/apache/mod_php4.c --- php-4.4.7,orig/sapi/apache/mod_php4.c 2007-01-01 18:46:51.000000000 +0900 +++ php-4.4.7/sapi/apache/mod_php4.c 2007-11-22 19:45:03.000000000 +0900 @@ -640,17 +640,6 @@ { int result = send_php(r, 0, NULL); -#if MEMORY_LIMIT - { - char *mem_usage; - TSRMLS_FETCH(); - - mem_usage = ap_psprintf(r->pool, "%u", AG(allocated_memory_peak)); - AG(allocated_memory_peak) = 0; - ap_table_setn(r->notes, "mod_php_memory_usage", mem_usage); - } -#endif - return result; } /* }}} */ diff -urN php-4.4.7,orig/sapi/apache/sapi_apache.c php-4.4.7/sapi/apache/sapi_apache.c --- php-4.4.7,orig/sapi/apache/sapi_apache.c 2007-01-01 18:46:51.000000000 +0900 +++ php-4.4.7/sapi/apache/sapi_apache.c 2007-11-22 19:45:03.000000000 +0900 @@ -52,6 +52,14 @@ file_handle.free_filename = 0; (void) php_execute_script(&file_handle TSRMLS_CC); +#if MEMORY_LIMIT + char *mem_usage; + TSRMLS_FETCH(); + + mem_usage = ap_psprintf(r->pool, "%u", AG(allocated_memory_peak)); + AG(allocated_memory_peak) = 0; + ap_table_setn(r->notes, "mod_php_memory_usage", mem_usage); +#endif } AP(in_request) = 0;
開発環境だけにしか適用しないので、これが原因でクラッシュしても大いに結構!
Apache1.3とPHP4.4って、どんだけレガシー環境いつまでも使ってんじゃねぇ!という、天の声という事にしておこう。
この辺は5.2でも変わっていないような感じがします。ソースコード(1・2・3・4・5)を斜め読みした限りでは以下の状況。
[4.4.7] SAPI apache : NG SAPI apache2filter : NG(そもそもコードの欠片も見当たらない) SAPI apache2handler : OK [5.2.5] SAPI apache : NG SAPI apache2filter : OK SAPI apache2handler : OK
php_request_shutdownよりも後に記録しようとしているので、それじゃタイミングが遅すぎる。。。_| ̄|○
この辺はマニュアルにも記載が無いんだよなぁ。。。memory_get_usage関数やmemory_get_peak_usage関数を使えって事なのかしら。
それにしても、ここ最近の地雷を踏む確立は非常に高い。。。歩く地雷原みたいな。