\r\n"; if(1){ /****基本环境初始化*******start**/ include_once WEB_PHY_ROOT."/base/const.php"; require WEB_PHY_ROOT.'/exception2log.php'; echo date("Y-m-d H:i:s")." ###环境初始化-引入异常处理功能集### proc_id={$nowProcessGuid} end ---->\r\n"; include_once WEB_PHY_ROOT."/base/base.php"; echo date("Y-m-d H:i:s")." ###环境初始化-引入基本函数库### proc_id={$nowProcessGuid} end ----->\r\n"; include_once WEB_PHY_ROOT."/base/mysql.php"; echo date("Y-m-d H:i:s")." ###环境初始化-引入mysql-DAC类### proc_id={$nowProcessGuid} end ----->\r\n"; $prjRoot=WEB_PHY_ROOT."/prjcenter/prj$WsAjaxPrj"; include_once $prjRoot."/base/entry.php"; echo date("Y-m-d H:i:s")." ###环境初始化-引入项目entry### proc_id={$nowProcessGuid} end ----->\r\n"; define('WEB_PHY_FILEROOT', $prjRoot.'/fileroot/uploads'); define('WEB_URL_FILEROOT', "/prjcenter/prj$WsAjaxPrj".'/fileroot/uploads'); echo date("Y-m-d H:i:s")." ###环境初始化-引入项目uploads目录位置### proc_id={$nowProcessGuid} end ----->\r\n"; /****基本环境初始化******finish**/ } if($php_is_climode){//cli模式下附加进程信号 /****进程信号初始化***start**/ echo date("Y-m-d H:i:s")." ###进程信号初始化### proc_id={$nowProcessGuid} start ---->\r\n"; //信号ID和信号名称对应关系,没注释掉的信号都是可以通过pcntl_signal函数注册的 $GLOBALS['G_SIG_MAP'] = array( // 1 => 'SIGHUP', // 2 => 'SIGINT', 3 => 'SIGQUIT', // 4 => 'SIGILL', // 5 => 'SIGTRAP', // 6 => 'SIGABRT', // 7 => 'SIGEMT', // 8 => 'SIGFPE', //9 => 'SIGKILL', // 10 => 'SIGBUS', // 11 => 'SIGSEGV', // 12 => 'SIGSYS', // 13 => 'SIGPIPE', // 14 => 'SIGALRM', 15 => 'SIGTERM', // 16 => 'SIGURG', //17 => 'SIGSTOP', // 18 => 'SIGTSTP', // 19 => 'SIGCONT', // 20 => 'SIGCHLD', // 21 => 'SIGTTIN', // 22 => 'SIGTTOU', // 23 => 'SIGIO', // 24 => 'SIGXCPU', // 25 => 'SIGXFSZ', // 26 => 'SIGVTALRM', // 27 => 'SIGPROF', // 28 => 'SIGWINCH', // 29 => 'SIGINFO', // 30 => 'SIGUSR1', // 31 => 'SIGUSR2', ); //信号处理器逻辑,主要用于在父进程退出后,本进程必要的清理工作; function global_procsignal_handler($signo) { switch($signo){ case 3://QUIT case 15://TERM echo "父进程发送了终止信号,开始进行退出处理工作[".date("Y-m-d H:i:s")."]... \n"; echo "清理内容1\n"; echo "清理内容2\n"; exit(0); break; } } //注册信号处理器 foreach ($GLOBALS['G_SIG_MAP'] as $id => $name) { pcntl_signal($id, 'global_procsignal_handler'); } echo date("Y-m-d H:i:s")." ###进程信号初始化### proc_id={$nowProcessGuid} end --->\n"; /****进程信号初始化***finish**/ } while (1) { /****超时处理主体逻辑***周期 start**/ if($php_is_climode) pcntl_signal_dispatch(); //信号监测捕获并分发处理 $runfunc(); if($php_is_climode) pcntl_signal_dispatch(); //信号监测捕获并分发处理 sleep(intval($interval)); /****超时处理主体逻辑***周期finish**/ } }catch(Exception $ex){ echo $ex->getMessage()." stack trace=>".$ex->getTraceAsString(); throw $ex;//向上抛出异常 } } ?>