Скомпилированный PHP? - PullRequest
       48

Скомпилированный PHP?

16 голосов
/ 16 августа 2008

Кто-нибудь имеет опыт работы с PHP-ускорителями, такими как MMCache или Zend Accelerator ? Я хотел бы знать, если использование любого из них делает PHP сопоставимым с более быстрыми веб-технологиями. Кроме того, есть ли компромиссы для их использования?

Ответы [ 10 ]

13 голосов
/ 19 августа 2008

Обратите внимание, что Zend Optimizer и MMCache (или аналогичные приложения) - это совершенно разные вещи. Пока Zend Optimizer пытается оптимизировать код операции, MMCache будет кэшировать сценарии в памяти и повторно использовать предварительно скомпилированный код.

Некоторое время назад я провел несколько тестов, и вы можете найти результаты в моем блоге (хотя и на немецком). Основные результаты:

Один Zend Optimizer совсем не помог. На самом деле мои скрипты работали медленнее, чем без оптимизатора.

Когда дело доходит до кэшей: * Самый быстрый: eAccelerator * XCache * APC

И: Вы действительно хотите установить кэш кода операции!

Например: альтернативный текст http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

Это время, необходимое для вызова домашней страницы wordpress 10.000 раз.

Редактировать: Кстати, eAccelerator содержит сам оптимизатор.

5 голосов
/ 16 августа 2008

MMCache устарел. Я рекомендую либо http://pecl.php.net/package/APC, либо http://xcache.lighttpd.net/,, оба из которых также дают вам переменное хранилище (например, Memcache).

3 голосов
/ 16 августа 2008

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

На любом огромном веб-сайте, работающем с PHP (например, Facebook), используется какая-то система кеширования кода операции, например MMCache.

Проблема в том, что их нелегко настроить в зависимости от вашей системы.

2 голосов
/ 17 августа 2008

Я использую APC на своих производственных серверах, и он работает довольно хорошо из коробки. Скомпилируйте его и добавьте в PHP, и от него ничего не останется. Я проверяю это время от времени только для просмотра статистики, но, поскольку я использую MVC, все основные файлы (маршрутизаторы, контроллеры и т. Д.) Редко меняются изо дня в день, так что код остается скомпилированным и работает довольно эффективно. ,

2 голосов
/ 16 августа 2008

В зависимости от того, сколько вашего PHP-кода на самом деле выполняется и сколько времени это выполнение занимает, они могут быть действительно большим выигрышем. Это, конечно, не повредит, но выигрыш, который вы увидите, будет во многом зависеть от того, где вы сейчас проводите время.

Кстати, mmcache был добавлен в другой проект, я забыл название, но Google скажет вам.

1 голос
/ 30 августа 2008

BlaM-тестирование включало все вызовы БД, сделанные WordPress. Когда вы делаете меньше вызовов БД, вы увидите, что прирост производительности кэшей кода операции будет еще более существенным.

1 голос
/ 28 августа 2008

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

Если вы используете RedHat или CentOS, установить APC очень просто:

yum install php-devel httpd-devel php-pear
pecl install apc 
echo "extension=apc.so" > /etc/php.d/apc.ini
# if you're using SELinux:
chcon "system_u:object_r:textrel_shlib_t" /usr/lib/php/modules/apc.so
/etc/init.d/httpd restart

Вы спрашивали о недостатках. Единственным недостатком является то, что это требует некоторой памяти. По умолчанию для APC установлено значение 30 МБ, но его можно настроить, а стоимость чуть-чуть памяти больше, чем окупается при увеличенной скорости и скорости отклика.

1 голос
/ 17 августа 2008

в настоящее время мы используем apc, free и были просто подключи и играй на наших живых серверах. Огромное увеличение производительности нашего сайта, особенно с увеличением размера проекта. У меня также отключен apc.stat, поэтому он не проверяет, обновлен ли код, поэтому всякий раз, когда нам нужно обновить код на работающем сайте, мы перезапускаем apache.

0 голосов
/ 16 августа 2008

Я использовал Zend Accelerator немного раньше (2004 год). Это, безусловно, дало значительные выигрыши в производительности кода, с которым он мог работать, но, к сожалению, система, которую я использовал, была разработана для частой динамической загрузки кода и его оценки, что Zend Accelerator не мог сделать в то время (и я ' думаю, все еще не могу).

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

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

0 голосов
/ 16 августа 2008

Вы проверили Phalanger? Компилирует PHP в код .NET. Вот некоторые тесты , которые показывают, что это может значительно улучшить производительность.

...