Хороший оптимизатор для PHP-сценариев командной строки с интенсивным использованием процессора и памяти? - PullRequest
0 голосов
/ 31 марта 2011

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

есть ли генераторы опкодов, оптимизаторы, которые я могу использовать для оптимизации производительности этих постоянно работающих PHP-скриптов?

Они запускаются из командной строки, а не в Apache.

/usr/bin/php myBatchProcessor.php 

Работает ли eaccelerator или Zend оптимизатор для сценариев командной строки?или любые другие предложения?

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

PHP " оптимизаторы " - змеиное масло!

«Оптимизаторы» были нужны только в эпоху PHP4 из-за неэффективности при преобразовании исходного кода PHP в байт-код, на котором работал Zend Engine 1. Это больше не проблема в PHP5. Современные производные продуктов эпохи PHP4 также выполняют кэширование байт-кода, что очень полезно. Остерегайтесь любого продукта, который утверждает, что он может сделать простой ванильный PHP быстрее. Особенно за деньги.

Они запускаются из командной строки, а не в Apache.

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

Вы уверены , что уже профилировали свой код и удалили все возможные узкие места ?

Если это так, возможно, пришло время попробовать HipHop , компилятор, который преобразует PHP в C ++ перед созданием исполняемого файла. Он может не подходить для ваших нужд, так как он предназначен исключительно для обслуживания HTTP-запросов.

0 голосов
/ 31 марта 2011

Вы можете установить APC и включить APC для кэширования в командной строке.Удостовериться!в этом случае отключите APC для вашего веб-сервера, в противном случае они будут конфликтовать.

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

edit:
Добавьте эти настройки в ваш конфигурационный файл:
apc.enabled = 1<br> apc.enable_cli = 1

...