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

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

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

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

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

5 ответов

Решение

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

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

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

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

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

Я попытался заставить работать с ним несколько проектов 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

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

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

Но почему вы хотели бы иметь такую ​​двойную нагрузку? Вы можете запустить Java из PHP тоже:)

Другие вопросы по тегам