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

/**

02 * 入口函数

03 * 将此文件保存为 ProcessOpera.php

04 * 在terminal中运行 /usr/local/php/bin/php ProcessOpera.php &

05 * 查看进程 ps aux|grep php

06 */

07

08

09 ProcessOpera("runCode", array(), 8);

10

11 /**

12 * run Code

13 */

14 function runCode($opt = array()) {

15 //需要在守护进程中运行的代码

16 }

17

18 /**

19 * $func为子进程执行具体事物的函数名称

20 * $opt为$func的参数 数组形式

21 * $pNum 为fork的子进程数量

22 */

23 function ProcessOpera($func, $opts = array(), $pNum = 1) {

24 while(true) {

25 $pid = pcntl_fork();

26 if($pid == -1) {

27 exit("pid fork error");

28 }

29 if($pid) {

30 static $execute = 0;

31 $execute++;

32 if($execute >= $pNum) {

33 pcntl_wait($status);

34 $execute--;

35 }

36 } else {

37 while(true) {

38 //somecode

39 $func($opts);

40 sleep(1);

41 }

42 exit(0);

43 }

44 }

45 }