PHP“Uninclude”或从内存中删除?

时间:2012-08-03 14:13:37

标签: php exception memory memory-leaks phpunit

我正在构建一个测试工具来执行遗留PHP代码的目录,这些代码极其难以进行单元测试,尽管我正在使用PHPUnit来使用此工具。

关于PHPUnit的一个很酷的事情是,它会将PHP通知,警告和错误冒泡到异常中。利用这些知识,我已经在try / catch块中的目录中构建了一个递归include()文件的工具,并记录任何异常。

问题是,如果我包含数百个文件,这很快就会成为内存耗尽和崩溃。我考虑过使用它,但我不确定这是否会从内存中“清除”它:

// Include file into buffer
ob_start();

include($file);

// Clear file from buffer
ob_clean();

处理这种性质并适当管理内存/资源的最佳方法是什么?

[编辑]

此外,这是我正在开发的内部工具,用于帮助管理包含 untestable (在时间限制意义上)遗留过程代码的数千个文件。

这是一个想法呢?

// 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;

1 个答案:

答案 0 :(得分:1)

如果您创建一个单独的CLI脚本(" tester"),一次包含一个文件并记录异常,并拥有主脚本(" iterator"迭代/递归到你需要测试的脚本目录,并通过shell为每个文件调用测试器脚本?