企邮搬家进程管理逻辑,经过简化后的功能实现
//守护进程
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--;
}
}
总结
以上是编程之家为你收集整理的[PHP] 简单多进程并发全部内容,希望文章能够帮你解决[PHP] 简单多进程并发所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。