Я запускал свой код через профайлер xdebug и видел, что более 30 процентов времени тратится на вызовы require (). Каков наилучший способ улучшить это? Я видел несколько сообщений об использовании __autoload, но были противоречивые заявления об этом влиянии на APC (который мы используем), а также сомнения в его использовании для повышения производительности.
Причина, по которой требуется время потребления, – скорость ввода-вывода диска. Вы можете попробовать использовать автозагрузку, поскольку вам могут потребоваться файлы, которые на самом деле не используются. Еще один подход к сокращению накладных расходов IO на диске – объединить ваши файлы PHP в один большой файл. Требование большого файла, который содержит код, который вам всегда нужен, быстрее, чем включение одного и того же кода в несколько небольших файлов.
Кроме того, у APC есть функция, которая ускоряет работу с вызовом apc.include_once_override, которую вы можете попробовать включить.
Убедитесь, что в вашем приложении используется абсолютный, а не относительный путь. Самый простой способ сделать это – добавить свои пути к
dirname(__FILE__) // for php < 5.3 __DIR__ // for php >= 5.3
Вы можете улучшить скорость своего кода с помощью PHP-компилятора, например http://eaccelerator.net/ .
Такой компилятор делает все быстрее, включая файлы.
У APC и автозагрузки были некоторые проблемы. Это давно. В общем, APC может ускорить выполнение require
, поскольку он кэширует проанализированные файлы. По умолчанию APC по-прежнему stat
файл, чтобы увидеть, изменилось ли оно на диске. Вы можете предотвратить это, используя абсолютные пути и apc.stat
настройку apc.stat
. Обратите внимание, что это означает, что вам необходимо перезапустить сервер, чтобы очистить кеш.
сколько элементов находится в вашем пути включения? и является ли порядок местоположений разумным для вашего приложения? если вы используете относительные пути, тогда он будет проверять местоположения include-path для поиска подходящего файла.