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    }

posted @ 2013-02-05 10:45  幻星宇  阅读(348)  评论(0编辑  收藏  举报