page contents

PHP多进程并行执行php脚本

以下内容希望帮助到大家!

attachments-2020-05-qvjfxWhd5ecc7f2966ce7.jpg

直接看代码操作
<?php

//fork.php

$cmds = [
    '/data/wwwroot/default/test1.php',
    '/data/wwwroot/default/test2.php',
    '/data/wwwroot/default/test3.php'
];


foreach($cmds as $cmd) {
    $pid = pcntl_fork();
    if ($pid == -1) { 
        //进程创建失败
            echo '创建子进程失败时返回-1';
            exit(-1);
        }
        else if($pid) { 
        //父进程会得到子进程号,所以这里是父进程执行的逻辑
            pcntl_wait($status,WNOHANG);
        }
        else{ 
        //子进程处理逻辑
            echo getmypid() , " \r\n";
            sleep(20);// 保持20秒,确保能被ps查到

            pcntl_exec('/usr/local/php/bin/php',$cmd);
            exit(0);
        }
}


# php fork.php  //使用php cls模式执行运行fork.php

# ps aux | grep fork.php 
root     61097  0.0  0.7 367880  7776 pts/1    S    14:22   0:00 php fork.php 
root     61098  0.0  0.7 367880  7776 pts/1    S    14:22   0:00 php fork.php 
root     61099  0.0  0.7 367880  7776 pts/1    S    14:22   0:00 php fork.php 
root     61311  0.0  0.0 103268   872 pts/2    R+   14:22   0:00 grep --color fork.php 


attachments-2020-05-afx7GWZU5ecc7f3fb0288.jpg

  • 发表于 2020-05-26 10:30
  • 阅读 ( 663 )
  • 分类:PHP开发

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章