首页 > PHP中PCNTL中的问题。大神请进

PHP中PCNTL中的问题。大神请进

在PHP手册中提到:

PHP的进程控制支持实现了Unix方式的进程创建, 程序执行, 信号处理以及进程的中断。 进程控制不能被应用在Web服务器环境,当其被用于Web服务环境时可能会带来意外的结果。
PCNTL不能用在WEB服务器。。。PHP既然不能用在web服务器,那么这种情况又用在哪里呢?
客户端吗??


竟然搜到这么古老的一个问题。
首先纠正一下,pcntl是可以在web服务器使用的,只是不建议使用,而不是不能使用。
之所以不建议使用是因为用了pcntl会导致一些很怪异的问题,比如说其实你想要把主进程的逻辑输出到浏览器,而实际上输出的却是子进程的逻辑,主进程无任何输出。(如果你fork多个子进程处理的逻辑并不需要反馈给主进程,而是一些无关紧要的东西,仍然可以有一些方法可以用的)

web不建议用,那什么情况下适合用呢?上面说到会导致数据显示的问题,那不需要显示的情况下就很好用了。比如cli模式,跑定时任务,守护进程啥的,用起来就很棒啦。


PHP运行模式有4种:

1)cgi 通用网关接口(Common Gateway Interface))
2) fast-cgi 常驻 (long-live) 型的 CGI
3) cli 命令行运行 (Command Line Interface)
4)web模块模式 (apache等web服务器运行的模块模式)

题主所了解的应该是第四种


比如用在处理数据的脚本上,可以使用多进程处理,又或者用在服务类型的代码上。

【热门文章】
【热门文章】