为什么在prod-serv上不鼓励在php中使用pcntl库?

时间:2011-02-04 15:27:12

标签: php pcntl

有人可以告诉我为什么不鼓励在生产服务器上使用pcntl lib? PHP手册简要介绍了它,我迫切需要使用这个库...... 还有另一种方法可以在php中做同样的事情吗?

2 个答案:

答案 0 :(得分:3)

在生产环境中不鼓励使用pcntl,因为它支持的功能(fork,进程控制,信号处理)是相当明确的事情,你应该在CGI风格的应用程序中使用它。现在,如果你在PHP中编写一个守护进程或命令行应用程序,这是另一回事......

来自PHP manual

  

不应在Web服务器环境中启用过程控制,并且如果在Web服务器环境中使用任何过程控制功能,则可能会发生意外结果。

答案 1 :(得分:1)

必须清楚php cli脚本和sapi / cgi脚本的差异。 生产系统上的php也可以支持pcntl。

这里重要的是要有2个php配置文件。一个用于cli,一个用于cgi设置。 然后必须在cgi设置中禁用pctnl,因为真正的安全问题是,在网络服务器执行时分支脚本可能会让僵尸进程充斥系统。

在cli环境中,可能需要编写fork的脚本...