[PHP] 简单多进程并发

前端之家收集整理的这篇文章主要介绍了[PHP] 简单多进程并发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

 企邮搬家进程管理逻辑,经过简化后的功能实现

 

  1. <?PHP
  2. //守护进程
  3. umask(0); //把文件掩码清0
  4. if (pcntl_fork() != 0){ //是父进程,父进程退出
  5. exit();
  6. }
  7. posix_setsid();//设置新会话组长,脱离终端
  8. if (pcntl_fork() != 0){ //是第一子进程,结束第一子进程
  9. exit();
  10. }
  11. chdir("/"); //改变工作目录
  12.  
  13.  
  14. //开启五个子进程
  15. $worker=0;
  16. do {
  17.  
  18. for($i=0;$i<6;$i++){
  19. $pid = pcntl_fork();
  20. if ($pid == -1) {
  21. return false;
  22. } elseif ($pid == 0) { //子进程,在此处处理业务逻辑
  23.  
  24. //TODO
  25.  
  26. sleep(60);
  27. exit;
  28. } else { // parent
  29. $worker++;
  30. if($worker>5){
  31. $id = pcntl_wait($status);
  32. if ($id > 0) {
  33. $worker--;
  34. }
  35. }
  36. }
  37. }
  38. usleep(200000);
  39.  
  40. } while (true);
  41.  
  42. while ($worker > 0) {
  43. $id = pcntl_wait($status);
  44. if ($id > 0) {
  45. $worker--;
  46. }
  47. }

 

  

猜你在找的PHP相关文章