Является ли Quercus жизнеспособной заменой PHP в средах Java?

Для тех, кто наткнулся на этот вопрос, который не знает, что Quercus - это реализация PHP, выполняемая на Java.

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

У меня есть несколько вопросов относительно Quercus:

  • Вы использовали Quercus в товарах для доставки?
  • Сколько поддерживается php API?
  • Какие у вас есть проблемы, с которыми вы работали?
  • Вы смогли заставить его работать с Jetty? Вы когда-нибудь слышали об этом, работая с Jetty? (Я не мог понять это)

Ответы

Ответ 1

Я тестировал его с помощью WordPress, и производительность была почти вдвое больше, чем была установлена ​​в WordPress по умолчанию под обычным Apache/PHP. Что еще не так здорово.

Мы заметили, что, хотя Quercus поддерживает команды curl в PHP, он не поддерживает все варианты завитка. Так что автоматические загрузки плагинов не работали. Это не было большой сделкой, вы всегда можете скачать плагины и установить их вручную. Но это был красный флаг, так как мы не знали, что еще будет работать. Это также означало, что библиотека Facebook PHP не будет работать правильно (скорее всего).

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

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

Ответ 2

Я сделал небольшую работу, оценив Quercus, и это выглядело многообещающим, но не работало с проектом, над которым я работал, поскольку это было основано на Symfony, и рефлексивный характер Symfony был плохо обработан Quercus.

Я попытался получить от него несколько проектов PHP с открытым исходным кодом и нашел, что он имеет довольно полный API на основе PHP5.

Вы должны иметь возможность работать с Jetty. Я смог заставить его работать с Tomcat.

Вы действительно можете думать об этом как о замене JSP в приложении Java. Как он работает параллельно, как работает JSP в том, что вы компилируете код PHP на Java, точно так же, как вы компилируете JSP-код Java.

Я считаю, что большим недостатком перехода с Jetty было бы невозможность прекомпиляции кода PHP.

Однако существует немало преимуществ, даже если вы не смешиваете PHP с Java. Если вы смешиваете два, у вас есть еще больше преимуществ.

Ответ 3

См. ссылку о том, как разработчику удалось использовать Quercus для запуска PHP в Google App Engine

ПРИМЕЧАНИЕ. PHP официально не поддерживается в GAE, но с Quercus вы можете запустить это сейчас.

Ответ 4

Производительность PHP будет хороша только в профессиональной версии quercus. Потому что профессиональная версия компилирует PHP-код как java-байтовый код. Так будет быстрее.

Но версия с открытым исходным кодом по-прежнему использует интерпретатор PHP, как указано в http://en.wikipedia.org/wiki/Resin_Server

Кажется, в открытом выпуске soruce не будет повышения производительности.

Ответ 5

Хорошо, если вы проверите авторское право внизу страницы Quercus, вы увидите, что оно обновлено до '06, поэтому я не гарантирую поддержку PHP 5.x.

Но почему вы даже хотите иметь двойные издержки? Вы также можете запустить java из php:)