如下所示:
復制代碼 代碼如下:
/**
* 入口函數
* 將此文件保存為 ProcessOpera.php
* 在terminal中運行 /usr/local/php/bin/php ProcessOpera.php &
* 查看進程 ps aux|grep php
*/
ProcessOpera("runCode", array(), 8);
/**
* run Code
*/
function runCode($opt = array()) {
//需要在守護進程中運行的代碼
}
/**
* $func為子進程執行具體事物的函數名稱
* $opt為$func的參數 數組形式
* $pNum 為fork的子進程數量
*/
function ProcessOpera($func, $opts = array(), $pNum = 1) {
while(true) {
$pid = pcntl_fork();
if($pid == -1) {
exit("pid fork error");
}
if($pid) {
static $execute = 0;
$execute++;
if($execute >= $pNum) {
pcntl_wait($status);
$execute--;
}
} else {
while(true) {
//somecode
$func($opts);
sleep(1);
}
exit(0);
}
}
}