小邓博客,一位正在奋斗的PHP开发工程师的学习经历分享!为高效PHP开发而努力奋斗

PHP多线程

PHP dengwz7788 394℃ 0评论

PHP 在liunx里面是可以实现多进程的,但需要使用liunx扩展:pcntl 扩展

主要代码是

$pid = pcntl_fork();    //创建子进程
if ($pid == -1) {
   die('could not fork');   //错误处理:创建子进程失败时返回-1.
}else if ($pid) {
   pcntl_wait($status,WNOHANG);
     //父进程会得到子进程号,所以这里是父进程执行的逻辑
     //如果不需要阻塞进程,而又想得到子进程的退出状态,则可以注释掉pcntl_wait($status)语句,或写成:
    //等待子进程中断,防止子进程成为僵尸进程。
}else {     
     exit(0);//子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
}
PHP进程

PHP进程

从这样,可以看出来,父进程和子进程不是同步关系。父进程结束,子进程可以继续执行,父进程在等待子进程结束并回收。

PHP进程

PHP进程

 这里的PHP-fpm 都是fork出来的子进程,并且都是并行执行的。 所以原本单线程需要23分钟执行的代码,这里fork出20个子进程,就可以把时间缩短到30秒

转载请注明:PHP研发工程师_小邓PHP博客 » PHP多线程

喜欢 (2)or分享 (0)
发表我的评论
取消评论

(Spamcheck Enabled)

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址