Является ли 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 тоже:)