このツールにはPHPUnitを使用していますが、単体テストが非常に難しいレガシーPHPコードのディレクトリで実行するテストツールを構築しています。
PHPUnitの優れた点の1つは、PHPの通知、警告、およびエラーを例外にバブルアップすることです。その知識を使用してinclude()
、try / catchブロック内のディレクトリから再帰的にファイルを作成し、例外をログに記録するツールを作成しました。
問題は、何百ものファイルを含めると、これがすぐにメモリを大量に消費してクラッシュする可能性があることです。私はこれを使用することを検討しましたが、これがメモリからそれを「クリア」するかどうかはわかりません。
// Include file into buffer
ob_start();
include($file);
// Clear file from buffer
ob_clean();
この種の何かを処理し、メモリ/リソースを適切に管理するための最良の方法は何ですか?
[編集]
また、これは私が開発している内部ツールであり、テスト不可能な(時間制約の意味で)レガシー手続き型コードを含む何千ものファイルの管理に役立ちます。
考えとしてこれはどうですか?
// Enable garbage collector (in case this helps?)
gc_enable();
// Get procedural php and execute it
$fileData = file_get_contents($file);
eval($fileData);
// Clear variable
$fileData = null;