PHP项目中的多线程怎么利用进程控制函数实现

  介绍

这篇文章将为大家详细讲解有关PHP项目中的多线程怎么利用进程控制函数实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

PHP有一组进程控制函数(编译时需要-enable-pcntl与posix扩展),使得PHP能在nginx系统中实现跟c一样的创建子进程,使用exec函数执行程序,处理信号等功能。

CentOS 6下百胜安装PHP的,默认是不安装pcntl的,因此需要单独编译安装,首先下载对应版本的PHP,解压后

 cd php版本/ext/pcntl
  phpize
  ./configure,,使,,制作安装
  cp/usr/lib/php/modules/pcntl.所以/usr/lib64/php/modules/pcntl.so
  回声“扩展=pcntl.so"在比;/etc/php.ini/etc/init.d/httpd重启

方便极了。

下面是示例代码:

& lt;及# 63;php   头(& # 39;- type: text/html; charset=utf - 8 # 39;);//必须加载扩展   如果(! function_exists (“pcntl_fork")) {   死亡(“pcntl延伸是必须的!“);   }//总进程的数量   美元总额=3;//执行的脚本数量   数组$ cmdArr=();//执行的脚本数量的数组   ($ i=0;美元我& lt;美元总额;$我+ +){   美元cmdArr[]=数组(“path"=比;__DIR__。“/run.php", & # 39; pid # 39;=在我美元,& # 39;总# 39;=在美元总额);   }/*   展开:cmdArr美元   数组   (   [0]=比;数组   (   (路径)=比;/var/www/html/company/pcntl/run.php   (pid)=比;0   (总)=比;3.   )      [1]=比;数组   (   (路径)=比;/var/www/html/company/pcntl/run.php   (pid)=比;1   (总)=比;3.   )      [2]=比;数组   (   (路径)=比;/var/www/html/company/pcntl/run.php   (pid)=比;2   (总)=比;3.   )      )   */pcntl_signal (SIGCHLD SIG_IGN);//如果父进程不关心子进程什么时候结束,子进程结束后,内核会回收。   foreach (cmdArr美元美元cmd) {   $ pid=pcntl_fork ();//创建子进程//父进程和子进程都会执行下面代码   如果($ pid==1) {//错误处理:创建子进程失败时返回1。   死(& # 39;不能叉# 39;);   {}else if ($ pid)//父进程会得到子进程号,所以这里是父进程执行的逻辑//如果不需要阻塞进程,而又想得到子进程的退出状态,则可以注释掉pcntl_wait(状态)美元语句,或写成:   pcntl_wait(美元地位,WNOHANG);//等待子进程中断,防止子进程成为僵尸进程。   其他}{//子进程得到的pid为0美元,所以这里是子进程执行的逻辑。=$ $ path cmd (“path");   $ pid=$ cmd [& # 39; pid # 39;];   总=cmd美元[& # 39;总# 39;];   回声exec (“/usr/bin/php {$ path} {$ pid}{$总}“)干净\ n";   退出(0);   }   }   ,# 63;比;

关于PHP项目中的多线程怎么利用进程控制函数实现就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

PHP项目中的多线程怎么利用进程控制函数实现