Для тех из вас, у кого была возможность писать веб-приложения на PHP, а затем в качестве сервера приложений (например, решения на основе Python, такие как CherryPy или Pylons), в каком контексте серверы приложений являются лучшей альтернативой PHP?
Я предпочитаю PHP просто потому, что он доступен практически на любом веб-сервере (особенно на общем хосте), но я ищу другие веские причины, чтобы сделать осознанный выбор. Спасибо.






В PHP есть несколько продуктов, которые занимают то же место, что и CherryPy или Pylons.
(за исключением, конечно, Python, они не запускают;)
Посмотри на -
Лично я предпочитаю Drupal, который работает как отличный фреймворк и поставляется с множеством функций CMS и сайтов сообщества из коробки. Вышеупомянутые во многом отличаются друг от друга, но любой из них должен предложить вам лучшее из обоих миров, если вам нужен фреймворк / сервер приложений, работающий на PHP.
Какой из них правильный, во многом дело вкуса, хотя у каждого из них есть свои преимущества и недостатки.
Их гораздо больше - это только те, о которых я слышал хорошее от коллег и сотрудников. Это не полный список.
Преимущество развертывания для PHP огромно. У вас также будет большая база разработчиков, и похоже, что у вас уже есть значительный опыт. В общем, если вы хорошо знаете, как использовать язык программирования, безопаснее придерживаться его.
Преимущества использования веб-фреймворка Python, такого как Pylons, заключаются в том, что ваш код будет более аккуратным и более удобным в обслуживании. Конечно, это возможно с PHP, но, похоже, добиться этого гораздо труднее. Python просто более приятный язык, чем PHP, поэтому это может повлиять на ваше решение.
Лично я бы не стал называть Pylons или CherryPy «сервером приложений», если вам нужен сервер приложений Python, попробуйте Zope. (Оба они обслуживают приложения WSGI, но это тема для другого вопроса.) Кажется, существует множество эквивалентных фреймворков для PHP, и они были перечислены в других ответах.
Использование серверов приложений, таких как Pylons, Django и т. д., Требует гораздо больше работы по настройке и развертыванию, чем приложения PHP, которые обычно поддерживаются «из коробки». Я запустил несколько приложений Django, и мне пришлось немного научиться настраивать apache с помощью mod_python, чтобы все заработало. Я прилагаю усилия, потому что кодирование на python для меня намного приятнее, чем на PHP, и после того, как вы получите правильную конфигурацию Apache, вам больше никогда не придется с ней связываться. С другой стороны, если вы решите использовать такие фреймворки, как Django, Rails, Pylons, .... они, как правило, решают множество небольших повторяющихся задач, которые в противном случае вы бы выполняли самостоятельно. Но фреймворки - это отдельная большая тема для обсуждения.
Веб-приложения на Python, как правило, требуют большей начальной настройки и разработки, чем аналогичные сайты на PHP (особенно для небольших сайтов). Также, как правило, есть более многоразовые части для PHP (например, Wordpress в виде блога). Настройка сервера для запуска веб-приложений Python может быть сложным процессом, который не всегда хорошо документирован. PHP, как правило, очень легко запустить с Apache.
Кроме того, поскольку PHP очень широко используется и активно используется новичками, для него, как правило, есть очень хорошая документация.
Однако Python намного веселее и удобнее в обслуживании. Он хорошо масштабируется (с точки зрения сложности разработки, а не трафика).
Лично я бы также сказал, что использование Python помогает научиться лучше решать проблемы. Я определенно лучший разработчик, так как изучил способ работы с Python.
У меня такое чувство, что некоторые ответы не касались непосредственно первоначального вопроса, поэтому я решил опубликовать свой собственный. Я так понимаю, что вопрос был о разнице между моделью развертывания mod_php и моделью развертывания сервера приложений.
Проще говоря, PHP выполняет заданный сценарий при каждом запросе, и приложение не знает, что произошло раньше (если это не эмулируется каким-либо образом). Более того, даже исходный код анализируется при каждом запросе (если вы не используете кеш байт-кода, например APC). Этот процесс может быть медленным, особенно если у вас есть фреймворк со сложной инициализацией.
В отличие от этого, сервер приложений должен быть запущен один раз, а затем он ожидает обработки запроса. Сервер приложений должен очищать ресурсы после каждого запроса (выделенная память, открытые дескрипторы и т. д.), Он также может объединять определенные ресурсы (например, соединения с базой данных), которые можно повторно использовать между запросами для повышения производительности.
Эта более поздняя модель (сервер приложений) в большинстве случаев более эффективна, но, с другой стороны, более сложна в настройке и обслуживании. Это также более требовательно, так как вы должны уделять больше внимания ресурсам, которые вы используете, чтобы избежать утечек ресурсов.
Это отличное описание. Пожалуйста, проголосуйте за.