PHP中是否有一个函数来查询打开文件的数量?
类似memory_get_usage()
但类似于打开文件。
我正在运行Zend Framework的单元测试套件。问题是,在完成Zend_Search_Lucene的测试后,后续测试开始失败。但如果我跳过Zend_Search_Lucene测试,所有测试套件都会成功。
我想证明Zend_Search_Lucene(或任何其他测试套件)打开太多文件而不是自行清理。我认为PHP可能只是简单地报告打开了多少文件。但在搜索PHP手册和谷歌20分钟后,我找不到任何此类功能。
答案 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
答案 2 :(得分:1)
我要做的是unregister默认的流处理程序,然后是register我自己的,我为stream_open
提供了一个保留内部计数器的实现。< / p>
答案 3 :(得分:0)
这两个可能会做你想要的:
apd_dump_regular_resources
- 将所有当前常规资源作为数组返回apd_dump_persistent_resources
- 将所有持久资源作为数组返回 Iit是一个疯狂的猜测,因为我从未使用过APD(它是PECL),所以它可能是资源并不是指实际的resource
类型。不幸的是,我找不到任何显示输出的文档。