search

Home  >  Q&A  >  body text

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

在PHP手册中提到:

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

阿神阿神2825 days ago341

reply all(3)I'll reply

  • ringa_lee

    ringa_lee2017-04-10 15:14:29

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

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:14:29

    PHP运行模式有4种:

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

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

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 15:14:29

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

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

    reply
    0
  • Cancelreply