Allowed memory size of *** exhausted が何のせいなのかわからない悩みを根絶やしにするため実行中の PHP プロセスのメモリ内容をぶっこぬくツールを作った
DRANK

くわしい解説 GitHub のプロジ…

qiita.com
Related Topics: PHP
1 comments
  • 実行中の PHP スクリプトのメモリ内容をプロセス外から解析し、変数内容や参照関係、メモリ消費量の内訳などを把握できるスタンドアロンのツール Reli の紹介。

    PHP で書かれているが、やっていることは FFI でシステムコールを呼んで別プロセスの処理系内の C 構造体のメモリレイアウトを解釈していく低レベルプログラミング。

    計測対象のスクリプトに一切手を入れずに使えるが、計測対象を修正し register_shutdown_function() のハンドラ で memory_limit 超過を検知した上、自身を解析するよう起動すれば、memory_limit 超過時のメモリ消費量の内訳も分かる(ふつうは死んだ時の行とファイル以外ほぼノーヒント)。