- 论坛徽章:
- 0
|
本帖最后由 pwtitle 于 2010-09-14 11:09 编辑
需求如下:
1、脚本运行Daemon到后台(起一个主进程)
2、主进程运行一个脚本不断检查任务(比如每1秒从队列中取任务)
3、当主进程检查到一个任务时,起一个子进程(几个任务起就起几个子进程),同时主进程继续检查任务,子进程完成计算后,exit自己,并且通知主进程(主进程需要后续处理,比如所有任务的数据合并等)。- <?php
- class Process{
- public function fork($obj,$argv){
- $pk = pcntl_fork();
- if($pk===0){
- $cid=getmypid();
- $obj->__fork($argv);
- posix_kill($cid, SIGTERM);
- exit;
- }
- }
- public function daemon(){
- $pid = pcntl_fork();
- if($pid===0){
- umask(0);
- posix_setsid();
- chdir("/");
- }
- }
- public function checker(){
- return array('t1','t2','t3');
- }
- }
- class Test{
- public function __fork($argv){
- while(1){
- echo "[".posix_getppid()."][".date("H:i:s")."]".$argv."\n";
- sleep(1);
- }
- }
- }
- $test = new Test();
- $p = new Process();
- $p->daemon();
- //while(1){
- $tasks = $p->checker();
- foreach($tasks as $task){
- $p->fork($test,$task);
- }
- // sleep(1);
- //}
- ?>
复制代码 跪求各位大爷指点江山,不胜感激。 |
|