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 }