PHP непостоянный дизайн процессов против Python/Java
В настоящее время я рассматриваю выбор между этими 3 языками для проекта, который потребует очень высокого времени безотказной работы (время безотказной работы важнее производительности).
Я некоторое время был разработчиком PHP и не возражал бы перейти на "лучший" язык, такой как Python, или более (возможно) более профессиональный, такой как Java, но есть одна вещь, которая меня сдерживает:
В PHP предположим, что один пользователь создает какой-то неправильный/странный запрос, который приводит к сбою моего кода - только этот один пользователь будут затронуты. Другие пользователи могут продолжать делать запросы, так как каждый HTTP-запрос вызывает новый PHP-процесс.
Рассмотрим Python или Java: если пользователь завершит работу с моим внутренним кодом, будет запущен только один процесс, и все веб-приложение выйдет из строя, что станет катастрофой.
Мой вопрос в том, есть ли слово, которое описывает эти два разных подхода к веб-программированию? Кроме того, я упускаю что-то очевидное, или PHP действительно имеет такое большое преимущество перед Python/Java/другие подходы к постоянным процессам, и если да, то почему Python не использует этот подход?
2 answers
Я искал кого-нибудь, кто указал бы мне на такую статью:
Http://www.electricmonk.nl/docs/apache_fastcgi_python/apache_fastcgi_python.html
Python может постоянно работать в фоновом режиме через WSGI, и может быть много интерпретаторов, ожидающих запроса. Если один из интерпретаторов выходит из строя, это не проблема, так как другие интерпретаторы ждут, и потому что Apache может автоматически перезапустить любой интерпретатор, который выходит из строя.
Питон также может быть вызван вручную при каждом запросе, аналогичном PHP, но это медленнее.
Это не проблема, связанная с конкретным языком. Это проблема в том, как вы тестируете свое программное обеспечение, прежде чем внедрять его в свою живую среду. И как вы определяете свою серверную инфраструктуру.
Если у вас есть ошибка в вашем программном обеспечении, которая приводит к сбою сервера, вы должны ее исправить. Даже PHP может привести к сбою всего сервера, если в mod_php/вашем коде есть странная ошибка.
Если вы не хотите иметь единственную точку отказа, вы должны создать настройку высокой доступности. не менее 2 Балансировщиков нагрузки (например, с сохраненным ), 2 веб-сервера, 2 Сервера баз данных, 2...
Также вы хотите использовать что-то вроде God или mon для мониторинга ваших процессов и реагирования на внезапную смерть необходимых служб.