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

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

16.08.2008 00:55:53
Вы должны изменить заголовок на «Ускоренный PHP». Это вообще не касается компиляторов, хотя есть много вопросов о компиляции PHP.
Paul Biggar 26.09.2009 13:15:39
10 ОТВЕТОВ
РЕШЕНИЕ

Обратите внимание, что 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 содержит сам оптимизатор.

13
13.04.2012 10:09:13

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

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

2
16.08.2008 01:20:55

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

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

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

3
16.08.2008 02:34:13

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

5
16.08.2008 03:37:34

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

0
15.09.2011 12:17:30

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

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

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

0
16.08.2008 12:26:06

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

2
17.08.2008 04:41:36

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

1
17.08.2008 18:43:18

Я использую 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
28.08.2008 10:30:32

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

1
30.08.2008 18:44:52
согласовано. У меня были и другие тесты тоже. Но я решил пойти по примеру "реального мира";)
BlaM 19.05.2009 08:16:14