为什么在 prod-serv 上不鼓励在 php 中使用 pcntl 库?
谁能告诉我为什么不鼓励在生产服务器上使用 pcntl lib? PHP 手册非常简短地介绍了它,我非常需要使用这个库...... 有没有另一种方法可以在 php 中做同样的事情?
Can anybody tell me why using the pcntl lib on production servers is discouraged? The PHP manual tells very briefly about it, and I'm in a dire need to use this library...
Is there another way to do the same thing in php?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在生产环境中不鼓励使用 pcntl,因为它支持的功能(分叉、进程控制、信号处理)是相当明确的,您不应该在 CGI 样式应用程序中使用这些功能。现在,如果您正在用 PHP 编写守护程序或命令行应用程序,那就是另一回事了......
来自 PHP 手册:
pcntl is discouraged in production environments because the functionality it supports (fork, process control, signal handling) are fairly explicitly things you should not be using in a CGI style application. Now, if you're writing a daemon or command line application in PHP, that is another matter...
From the PHP manual:
人们必须清楚 php cli 脚本和 sapi/cgi 脚本的区别。
生产系统上的 php 也可能支持 pcntl。
这里重要的是有 2 个 php 配置文件。一种用于 cli,一种用于 cgi 设置。
然后,必须在 cgi 设置中禁用 pctnl,因为真正的安全问题是,在 Web 服务器执行时分叉脚本可能会使僵尸进程淹没系统。
在 cli 环境中,可能需要能够编写 fork 脚本...
one has to be clear about the differences of a php cli script and a sapi/cgi script.
php on production systems may as well have support for pcntl.
the important thing here is to have 2 php config files. one for cli and one for cgi setup.
one then has to disable pctnl in the cgi setup because the real security issue is, that forking a script when executed by the webserver may leave zombie processes flooding the system.
in a cli environment it might be necessary to be able to write scripts that fork...