Производительность PHP ограничена require () - PullRequest
4 голосов
/ 12 июля 2009

Я провел свой код через профилировщик xdebug и увидел, что более 30 процентов времени уходит на вызовы require (). Каков наилучший способ улучшить это? Я видел несколько сообщений об использовании __autoload, но были противоречивые утверждения о его влиянии на APC (который мы используем), и сомневаюсь в его использовании для повышения производительности.

Ответы [ 5 ]

4 голосов
/ 12 июля 2009

Причиной, по которой требуется потребление времени, является скорость дискового ввода-вывода. Вы можете попробовать использовать автозагрузку, поскольку вам могут потребоваться файлы, которые на самом деле не используются. Другой подход к снижению накладных расходов на дисковый ввод-вывод заключается в объединении ваших файлов PHP в один большой файл. Требование большого файла, содержащего код, который вам всегда нужен, быстрее, чем включение одного и того же кода в несколько небольших файлов.

Кроме того, APC имеет функцию, для ускорения которой требуется apc.include_once_override, которую вы можете попробовать включить.

2 голосов
/ 12 июля 2009

Убедитесь, что ваши включения используют абсолютные, а не относительные пути. Самый простой способ сделать это, предвосхитив свои пути с помощью

dirname(__FILE__)  // for php < 5.3
__DIR__            // for php >= 5.3 
1 голос
/ 12 июля 2009

У APC и автозагрузки были одни проблемы. Это давно. В общем, APC может ускорить ваши require операторы, поскольку он кэширует проанализированные файлы. По умолчанию APC по-прежнему stat файл, чтобы увидеть, если он изменился на диске. Вы можете предотвратить это, используя абсолютные пути и отключив настройку apc.stat. Обратите внимание, что это означает, что вам нужно перезагрузить сервер, чтобы очистить кеш.

1 голос
/ 12 июля 2009

Вы можете повысить скорость своего кода с помощью PHP-компилятора, например http://eaccelerator.net/.

Такой компилятор заставляет все работать быстрее, в том числе и файлы.

0 голосов
/ 12 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...