大規模なWebアプリケーションを共有Webホスティング環境に移植しています。アプリはPHP4で作成されました。新しい環境にはPHP5.2があります。
何らかの理由で、PHP 5.2で実行しているときに、アプリケーションが大量のメモリをリークしています。私は、memory_get_usage()を使用して、メモリ使用量が64 MBの制限に達するまで文字通り監視できます(共有環境では非常に寛大で、サイトはPHP4で12または16MBで実行されていました)。
これは、PHP 5で変更されたものの副作用であると思われます。おそらく、引数でのオブジェクト参照の処理です。ただし、アプリケーションが非常に複雑で、部分的に十分に記述されていないため、リークの原因となる特定の動作を検索することは非常に困難です(はい、それは私のものです)。
アプリは共有ウェブスペースにインストールされているため、従来のデバッグ機能を使用できません(私が知る限り)。私は文字通り一日中プロジェクトに取り組んでいるので、ローカルで環境を再現することは避けたいと思います。
だから私の質問は:
特に大量のオブジェクトを処理する場合、典型的なPHP4 => 5の移行の落とし穴を知っている人はいますか?それが私のリークの原因である可能性があります
PHPで使用される変数用の、デバッガーに依存しない、スクリプトのみの「グラフィカルスコープダンプ」ツールを知っている人はいますか。これは、これらの膨大な量のメモリを消費している変数を見つけるのに役立ちます。