Хороший оптимизатор для PHP и скриптов командной строки с интенсивным использованием памяти?
Я оптимизировал сценарии при самых возможных узких местах. Трудно перенести код на другой язык, так что это не очень хорошее решение.
Есть ли генераторы опкодов, оптимизаторы, которые я могу использовать для оптимизации производительности этих постоянно работающих PHP-скриптов?
Они запускаются из командной строки, а не на Apache.
/usr/bin/php myBatchProcessor.php
Работает ли eaccelerator или Zend optimizer для сценариев командной строки? или какие-либо другие предложения?
2 ответа
PHP "оптимизаторы" - змеиное масло!
"Оптимизаторы" были нужны только в эпоху PHP4 из-за неэффективности преобразования из исходного кода PHP в байт-код, на котором работал Zend Engine 1. Это больше не проблема в PHP5. Современные производные продуктов эпохи PHP4 также выполняют кэширование байт-кода, что очень полезно. Остерегайтесь любого продукта, который утверждает, что он может сделать простой ванильный PHP быстрее. Особенно за деньги.
Они запускаются из командной строки, а не на Apache.
Обычно, как и другие, я бы рекомендовал кэш байт-кода APC, но APC ничего не делает для долго выполняющихся сценариев, запускаемых из командной строки.
Вы уверены, что уже профилировали свой код и устранили все возможные узкие места?
Если это так, возможно, пришло время попробовать HipHop, компилятор, который преобразует PHP в C++ перед созданием исполняемого файла. Он может не подходить для ваших нужд, так как он предназначен исключительно для обслуживания HTTP-запросов.
Вы можете установить APC и включить APC для кэширования в командной строке. Удостовериться! в этом случае отключить APC для вашего веб-сервера, в противном случае они будут конфликтовать.
Не ожидайте слишком многого от APC, так как генерация кода операции обычно не та часть, которая замедляет ваш скрипт, посмотрите на профилирование ваших скриптов.
редактировать:
Добавьте эти настройки в ваш конфигурационный файл:apc.enabled = 1
apc.enable_cli = 1