Для тех, кто наткнулся на этот вопрос, который не знает, что такое Quercus , – это реализация PHP, выполняемая на Java.
Для проекта, над которым я сейчас работаю, мы обслуживаем php-страницы с помощью cgi-сервлетов (я знаю, что это неудобно, но это требование для поддержки устаревшего кода). Я был рад открыть проект Quercus, потому что он выглядел как многообещающий путь для переноса нашего проекта на более чистую среду Java.
У меня есть несколько вопросов относительно Quercus:
Я тестировал его с помощью WordPress, и производительность была почти в два раза выше, чем установка WordPress по умолчанию была под обычным Apache / PHP. Что еще не так здорово.
Мы заметили, что, хотя Quercus поддерживает команды curl в PHP, он не поддерживает все варианты завитка. Так что автоматические загрузки плагинов не работали. Это не было большой сделкой, вы всегда можете скачать плагины и установить их вручную. Но это был красный флаг, так как мы не знали, что еще будет работать. Это также означало, что библиотека PHP Facebook не будет работать правильно (скорее всего).
Если вы выполняете множество подключений и вызовов по базам данных, вы должны увидеть большой прирост производительности в этой области, поскольку будет использоваться пул соединений с базами данных.
Если вы пишете код, я бы сказал, что это очень жизнеспособный вариант. Достаточно PHP поддерживается, что если вы найдете что-то, что не работает, вы можете использовать другую поддерживаемую команду PHP или просто использовать команду Java.
Я сделал небольшую работу, оценив Quercus, и это выглядело многообещающим, но не работало с проектом, над которым я работал, поскольку это было основано на Symfony, и рефлексивный характер Symfony не был хорошо обработан Quercus.
Я попытался получить от него несколько PHP-проектов с открытым исходным кодом и нашел, что он имеет довольно полный API на основе PHP5.
Вы должны иметь возможность работать с Jetty. Мне удалось заставить его работать с Tomcat.
Вы действительно можете думать об этом как о замене JSP в приложении Java. Как он работает параллельно, как работает JSP в том, что вы компилируете код PHP на Java, точно так же, как вы компилируете JSP-код Java.
Я считаю, что большой недостаток, связанный с Jetty, заключается в невозможности прекомпиляции кода PHP.
Однако есть немало преимуществ, даже если вы не смешиваете PHP с Java. Если вы смешиваете два, у вас есть еще больше преимуществ.
См. Ссылку о том, как разработчику удалось использовать Quercus для запуска PHP в Google App Engine
ПРИМЕЧАНИЕ. PHP официально не поддерживается в GAE, но с Quercus вы можете запустить это сейчас.
Производительность PHP будет хорошей только в профессиональной версии quercus. Потому что профессиональная версия компилирует PHP-код как java-байтовый код. Так будет быстрее.
Но версия с открытым исходным кодом по-прежнему использует интерпретатор PHP, как указано в http://en.wikipedia.org/wiki/Resin_Server
Похоже, в открытом выпуске soruce не будет повышения производительности.
Хорошо, если вы проверите авторское право в нижней части страницы Quercus, вы увидите, что оно обновлено до '06, поэтому я не гарантирую поддержку PHP 5.x.
Но почему вы даже хотели бы иметь двойные накладные расходы? Вы также можете запустить java из php 🙂