Загрузка процессора с file_exists в php - PullRequest
3 голосов
/ 11 января 2010

У меня есть сайт с высокой загрузкой процессора httpd запрос в минуту. Я заметил, что я использую "file_exists" в каждом запросе httpd. Это функция слишком тяжелая?

Ответы [ 3 ]

6 голосов
/ 11 января 2010

Эта функция будет только проверять, существует ли файл - что означает доступ к диску (что может занять немного времени, но не так много)

Учитывая, что ваше приложение, вероятно, состоит из десятков (если не сотен) файлов PHP, которые должны быть прочитаны для каждого запроса, я не думаю, что один file_exists имеет какое-либо значение.

(Ну, по крайней мере, пока вы проверяете файл на локальном диске - не проходя через сетевой диск или что-то в этом роде)


В качестве пояснения: если вы хотите определить, сколько ресурсов процессора тратится в ваших PHP-скриптах, вас может заинтересовать расширение Xdebug , которое обеспечивает функциональность профилирования.

Вы можете прочитать этот ответ, который я дал некоторое время назад, что довольно долго: Как я могу измерить скорость кода, написанного на php? - я не буду копировать-вставлять его здесь.

Возможно, вы также захотите прочитать мой ответ на этот вопрос (есть раздел, где я писал о Xdebug и профилировании) : Оптимизация веб-сайтов на Kohana для скорости и масштабируемости

2 голосов
/ 11 января 2010

Реалистичная игра в «угадай узкое место», вероятно, будет довольно бесплодной задачей - я бы рекомендовал использовать профилировщик, такой как встроенный в Zend Studio .

1 голос
/ 11 января 2010

file_exists, как правило, очень дешево, тем более что результат кэшируется в статистическом кеше php .. Такие области, как тяжелые БД, как правило, являются самыми большими потребителями процессора.

Попробуйте выполнить профилирование, чтобы определить, какая часть вашего приложения используется чаще всего, некоторые примеры здесь:

http://www.ibm.com/developerworks/opensource/library/os-php-fastapps2/

...