Сколько открытых файлов в PHP? - PullRequest
3 голосов
/ 16 октября 2010

Есть ли в PHP функция для запроса количества открытых файлов?

Вроде как memory_get_usage(), но для открытых файлов.

Я использую наборы модульных тестов для Zend Framework.Проблема в том, что после прохождения тестов для Zend_Search_Lucene последующие тесты начинают проваливаться.Но если я пропущу тесты Zend_Search_Lucene, все наборы тестов пройдут успешно.

Я хотел бы доказать, что Zend_Search_Lucene (или любой другой набор тестов) открывает слишком много файлов и не очищает после себя.Я думал, что PHP может иметь функцию, которая просто сообщает, сколько файлов открыто.Но после 20 минут поиска руководства по PHP и Google я не могу найти такую ​​функцию.

Ответы [ 4 ]

7 голосов
/ 16 октября 2010

В PHP нет такой функции.

Но есть альтернативы.Если вы используете linux / unix / OSX, то запуск lsof из командной строки может дать вам эту информацию.

Это может быть совмещено с настраиваемым прослушивателем тестов для PHPUnit - я описал подход под другим вопросом - Как обернуть PHPUnit для управления отчетами командной строки?

Интерфейс PHPUnit_Framework_TestListener имеет такие методы, как startTest (), endTest (), startTestSuite (), endTestSuite ().Вы можете выполнить вызов shell_exec для lsof из этих методов и распечатать интересные числа до и после каждого test / testsuite.

2 голосов
/ 16 октября 2010

Для открытых файлов: я использую lsof

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

1 голос
/ 16 октября 2010

Что бы я сделал, это отменил регистрацию обработчик потока по умолчанию и затем зарегистрировал мой собственный, в котором я бы предоставил реализацию для stream_open хранит внутренний счетчик.

0 голосов
/ 17 октября 2010

Эти два могут сделать то, что вы ищете:

  • apd_dump_regular_resources - вернуть все текущие регулярные ресурсы в виде массива
  • apd_dump_persistent_resources - вернуть все постоянные ресурсы как массивобратитесь к фактическому типу resource.К сожалению, я не смог найти никакой документации, показывающей вывод.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...