[PHP] 简单多进程并发
程序员文章站
2023-11-11 14:24:04
企邮搬家进程管理逻辑,经过简化后的功能实现 ......
企邮搬家进程管理逻辑,经过简化后的功能实现
<?php
//守护进程
umask(0); //把文件掩码清0
if (pcntl_fork() != 0){ //是父进程,父进程退出
exit();
}
posix_setsid();//设置新会话组长,脱离终端
if (pcntl_fork() != 0){ //是第一子进程,结束第一子进程
exit();
}
chdir("/"); //改变工作目录
//开启五个子进程
$worker=0;
do {
for($i=0;$i<6;$i++){
$pid = pcntl_fork();
if ($pid == -1) {
return false;
} elseif ($pid == 0) { //子进程,在此处处理业务逻辑
//todo
sleep(60);
exit;
} else { // parent
$worker++;
if($worker>5){
$id = pcntl_wait($status);
if ($id > 0) {
$worker--;
}
}
}
}
usleep(200000);
} while (true);
while ($worker > 0) {
$id = pcntl_wait($status);
if ($id > 0) {
$worker--;
}
}