PHP非持久化流程设计与Python/Java


PHP non-persistent process design vs Python/Java

目前,我正在考虑在这三种语言之间选择一个需要很高正常运行时间的项目(正常运行时间比性能更重要)。

我已经做了一段时间的PHP开发人员,我不介意切换到"更好"的语言,比如Python,或者更专业(可能)的语言,例如Java,但有一件事阻碍了我:

在PHP中,假设一个用户创建了一些格式错误/奇怪的请求,导致我的代码崩溃——只有那个用户会受到影响。其他用户可以继续进行请求,因为每个HTTP请求都会调用一个新的PHP进程。

以Python或Java为例:如果用户崩溃了我的后端代码,那么只有一个进程在运行,整个Web应用程序就会崩溃,这将是一场灾难。

我的问题是,有没有一个词可以描述这两种不同的网络编程方法?此外,我是否遗漏了一些显而易见的东西,或者PHP真的比Python/Java/其他持久化进程方法有这么大的优势?如果有,为什么Python不采用这种方法?

我想要的是有人给我指一篇这样的文章:

http://www.electricmonk.nl/docs/apache_fastcgi_python/apache_fastcgi_python.html

Python可以通过WSGI在后台持久运行,并且可能有许多解释器在等待请求。如果其中一个解释器崩溃,这不是问题,因为其他解释器正在等待,而且Apache可以自动重新启动任何崩溃的解释器。

类似于PHP,Python也可以在每次请求时手动调用,但速度较慢。

这不是特定于语言的问题。这是一个问题,在你将软件放入你的生活环境之前,你如何测试它。以及如何设计服务器基础设施。

如果你的软件中有一个错误,导致服务器崩溃,你应该修复它。如果mod_PHP/你的代码中存在一个奇怪的错误,即使是PHP也会导致整个服务器崩溃。

如果您不想出现单点故障,则必须建立一个高可用性设置。至少2个负载均衡器(例如,具有keepalived)、2个Web服务器、2个数据库服务器、2。。。

此外,你还想使用类似上帝或蒙的东西来监控你的流程,并对所需服务的突然死亡做出反应。