/** * 初始化设置 * @param type $path |错误日志目录 * @param type $name |错误日志名字 * @param type $display |是否显示信息 * @param type $log2file|是否写入文件 * @return boolean */ public static final function set($runmodel, $path, $name, $display = true, $log2file = true) { error_reporting(E_ALL); register_shutdown_function(array('Baserror', 'fatal')); set_error_handler(array('Baserror', 'corer')); self::$cfg_path = $path; self::$cfg_name = '[' . date('Y-m-d', time()) . ']' . $name; self::$cfg_display = $display; self::$cfg_log2file = $log2file; self::$cfg_runmodel = $runmodel == 'CLI' ? 'CLI' : 'CGI'; self::$define_err = array(); return true; }
$obj_dber->log_load($arr_load); $obj_dber->log_network($arr_network); Baserror::loger("Task [{$server['name']}] finish!"); } else { //数据抓取失败 Baserror::loger("Fetch [{$server['name']}] false."); } exit; } } //Baserror::loger("任务进程组完成创建.开始计时."); $int_runtime = 0; //等待子进程 do { foreach ($arr_pids as $key => $val) { //每隔一秒检查一次子进程状态 if (pcntl_waitpid($val, $status, WNOHANG) > -1) { //进程仍然在运行 //Baserror::loger("子进程[$val]正在运行."); } else { //发生错误时返回-1,如果提供了 WNOHANG作为option(wait3可用的系统)并且没有可用子进程时返回0。 //已经正常退出,移除PID数组 unset($arr_pids[$key]); //Baserror::loger("子进程[$val]已经退出."); } } sleep(1); $int_runtime++; } while (count($arr_pids) > 0); Baserror::loger("任务进程组运行结束.耗时{$int_runtime}秒."); exit;
include_once PATH_BASEKIT_SERVER; include_once PATH_BASEKIT_CHARTS; include_once PATH_BASEKIT_DT; include_once PATH_BASEKIT_DB; include_once PATH_BASEKIT_DBER; //忽略用户断开 ignore_user_abort(1); //接收参数 $get_time_start = isset($_POST['time_start']) ? (int) strtotime($_POST['time_start']) : 0; $get_time_end = isset($_POST['time_end']) ? (int) strtotime($_POST['time_end']) : 0; $get_realtime = (int) $_POST['realtime'] == 1 ? true : false; $get_realkeep = (int) $_POST['realkeep'] == 1 ? true : false; $get_lay_time = isset($_POST['relay_time']) ? (int) $_POST['relay_time'] : 8; $get_host = $_POST['host_name']; //设定错误控制 Baserror::set('CLI', PATH_LOG, 'api.log', true, true); //创建对象 $obj_server = new Bkex_server(); $arr_server = $obj_server->getservers($get_host); //结果集 $arr_json = array('data' => array(), 'status' => false); //获取目标服务器 if ($arr_server !== false) { $arr_system = $obj_server->system_get($arr_server); $obj_charts = new Bkex_charts(); //判断模式 if ($get_realtime) { //实时模式,采集数据并入库 $obj_dber = new Bkex_Dber($arr_server, $get_realtime, $get_realkeep); $obj_dt = new Bkex_Dt(); $obj_dt->fetch($arr_server['url']);