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

PHP实现多进程并行操作(可做守护进程)

程序员文章站 2022-05-01 08:17:38
...
PHP简单实现多进程并行处理,子进程负责处理事物,父进程可控制子进程数量,用pcntl扩展实现(备注:在windows下此效果无法实现)




  1. /**
  2. * 入口函数
  3. * 将此文件保存为 ProcessOpera.php
  4. * 在terminal中运行 /usr/local/php/bin/php ProcessOpera.php &
  5. * 查看进程 ps aux|grep php
  6. */
  7. ProcessOpera("runCode", array(), 8);
  8. /**
  9. * run Code
  10. */
  11. function runCode($opt = array()) {
  12. //需要在守护进程中运行的代码
  13. }
  14. /**
  15. * $func为子进程执行具体事物的函数名称
  16. * $opt为$func的参数 数组形式
  17. * $pNum 为fork的子进程数量
  18. */
  19. function ProcessOpera($func, $opts = array(), $pNum = 1) {
  20. while(true) {
  21. $pid = pcntl_fork();
  22. if($pid == -1) {
  23. exit("pid fork error");
  24. }
  25. if($pid) {
  26. static $execute = 0;
  27. $execute++;
  28. if($execute >= $pNum) {
  29. pcntl_wait($status);
  30. $execute--;
  31. }
  32. } else {
  33. while(true) {
  34. //somecode
  35. $func($opts);
  36. sleep(1);
  37. }
  38. exit(0);
  39. }
  40. }
  41. }
复制代码