PHP Exec()和Python脚本的可扩展性


PHP Exec() and Python script scaleability

我有一个php应用程序,它通过exec()和cgi执行Python脚本。

我有很多这样做的页面,虽然我知道WSGI是更好的长期方式,但我想知道对于中小流量来说,这种安排是否可以接受。

我之所以这么问,是因为有几篇文章提到Apache必须为Python解释器的每个实例生成一个新的进程,这会增加开销,但我不知道这对一个较小的项目有多重要。

谢谢。

在CGI的情况下,服务器每次收到请求时都会启动一个PHP解释器的副本。PHP依次启动Python进程,该进程在exec()之后被终止。启动两个进程并对每个请求执行所有导入操作会产生巨大的开销。

在FastCGI或WSGI的情况下,服务器会让两个进程保持预热状态(运行进程的最小和最大数量是可配置的),所以以一定的内存为代价,您可以摆脱每次启动新进程的麻烦。然而,您仍然需要在每次exec()调用上启动/停止Python进程。如果你可以在没有exec()的情况下使用Python应用程序,例如将PHP部分移植到Python,这将大大提高性能。

但正如您所提到的,这是一个小项目,因此唯一重要的标准是您当前的服务器是否能够承受当前的负载。