Вопрос PHP кеша против компиляции - PullRequest
5 голосов
/ 29 июня 2011

насколько я понимаю, если вы используете PHP-программу для кеширования, такую ​​как APC, eAccelerator и т. Д., Тогда коды операций будут храниться в памяти для более быстрого выполнения при последующих запросах. Мой вопрос: почему бы ВСЕГДА не было лучше / быстрее компилировать ваши скрипты, если вы используете компилятор, такой как phc или даже HPHP (хотя я знаю, что у них есть проблемы с динамическими конструкциями)? Зачем беспокоиться о хранении кодов операций, поскольку они должны быть перечитаны Zend Engine, который использует функции C для его выполнения, когда вы можете просто скомпилировать и пропустить этот шаг?

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Вы не можете просто скомпилировать в c, и ваш php-скрипт будет выполняться так же. HPHP выполняет настоящую компиляцию, но не поддерживает весь набор функций php.

Другие компиляторы на самом деле просто встраивают интерпретатор php в двоичный файл, так что вы все равно не компилируете код.

PHP не предназначен для компиляции. Кэширование кода операции очень быстро и достаточно для 99% приложений. Если у вас уровень трафика в Facebook и вы уже оптимизировали свою внутреннюю базу данных, компиляция может быть единственным способом повысить производительность.

PHP не является тонким слоем для библиотеки std c.

1 голос
/ 29 июня 2011

Если бы в PHP не было eval(), вероятно, было бы возможно сделать прямой PHP-> скомпилированный двоичный перевод с (относительной) легкостью. Но поскольку PHP сам может динамически создавать / выполнять сценарии на лету с помощью eval (), невозможно создать полноценный двоичный файл. Любой двоичный файл обязательно должен содержать весь PHP, потому что компилятор понятия не имеет, что может сделать ваш динамический код. Вы перешли бы из маленького скрипта 1 или 2 Кб в массивный мегабайтный двоичный файл.

...