PHP中打开了多少个文件?

时间:2010-10-16 17:46:13

标签: php unit-testing file-io

PHP中是否有一个函数来查询打开文件的数量?

类似memory_get_usage()但类似于打开文件。

我正在运行Zend Framework的单元测试套件。问题是,在完成Zend_Search_Lucene的测试后,后续测试开始失败。但如果我跳过Zend_Search_Lucene测试,所有测试套件都会成功。

我想证明Zend_Search_Lucene(或任何其他测试套件)打开太多文件而不是自行清理。我认为PHP可能只是简单地报告打开了多少文件。但在搜索PHP手册和谷歌20分钟后,我找不到任何此类功能。

4 个答案:

答案 0 :(得分:7)

PHP中没有这样的功能。

但也有其他选择。如果您正在运行linux / unix / OSX,那么从命令行运行lsof可以为您提供该信息。

这可以与PHPUnit的自定义测试监听器结合使用 - 我在不同的问题下描述了这种方法 - How to wrap PHPUnit to control command line reporting?

PHPUnit_Framework_TestListener接口具有startTest(),endTest(),startTestSuite(),endTestSuite()等方法。您可以从这些方法执行对lsof的shell_exec调用,并在每个test / testsuite之前和之后打印出有趣的数字。

答案 1 :(得分:2)

对于打开的文件:我正在使用lsof

http://novosial.org/debug/unix/lsof/

答案 2 :(得分:1)

我要做的是unregister默认的流处理程序,然后是register我自己的,我为stream_open提供了一个保留内部计数器的实现。< / p>

答案 3 :(得分:0)

这两个可能会做你想要的:

Iit是一个疯狂的猜测,因为我从未使用过APD(它是PECL),所以它可能是资源并不是指实际的resource类型。不幸的是,我找不到任何显示输出的文档。