欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

利用pcntl_fork实现PHP多进程的例子

程序员文章站 2023-12-27 22:11:57
...
  1. /home/jerry/Public/php-5.4.0/ext/pcntl
复制代码

解释: int pcntl_fork ( void ) pcntl_fork()函数创建一个子进程,这个子进程仅PID(进程号) 和PPID(父进程号)与其父进程不同。 成功时,在父进程执行线程内返回产生的子进程的PID,在子进程执行线程内返回0。 失败时,在 父进程上下文返回-1,不会创建子进程,并且会引发一个PHP错误。 int pcntl_wait ( int &$status [, int $options = 0 ] ) pcntl_wait — 等待或返回fork的子进程状态 void pcntl_exec ( string $path [, array $args [, array $envs ]] ) pcntl_exec — 在当前进程空间执行指定程序

例子:

  1. /**
  2. * pcntl_fork 多进程的代码示例
  3. * edit bbs.it-home.org
  4. */
  5. $cmds=array(
  6. array('/home/jerry/projects/www/test2.php'),
  7. array('/home/jerry/projects/www/test3.php')
  8. );
  9. foreach($cmds as $cmd){
  10. $pid=pcntl_fork();
  11. if($pid==-1){
  12. //进程创建失败
  13. echo '创建子进程失败时返回-1';
  14. exit(-1);
  15. }
  16. else if($pid){
  17. //父进程会得到子进程号,所以这里是父进程执行的逻辑
  18. pcntl_wait($status,WNOHANG);
  19. }
  20. else{
  21. //子进程处理逻辑
  22. sleep(5);
  23. pcntl_exec('/usr/bin/php',$cmd);
  24. exit(0);
  25. }
  26. }
  27. ?>
复制代码

上一篇:

下一篇: