php检查服务运行状态

113 阅读1分钟

php检查服务运行状态,检查的服务有: nginx php-fpm redis disk queue mysql

代码如下 `public function checkRunningStatus() {

returnData=[];returnData = []; resultReason = ''; // 服务列表 services=[nginx=>nginx,phpfpm=>phpfpm,redis=>ps,disk=>df,queue=>ps,mysql=>mysql];services = [ 'nginx' => 'nginx', 'php-fpm' => 'php-fpm', 'redis' => 'ps', 'disk' => 'df', 'queue' => 'ps', 'mysql' => 'mysql' ]; socket_port = config('app.filter_ws_port'); foreach (servicesasservices as key => &val) { cmd = ''; switch (val) { case 'nginx': cmd = "ps -ef | grep -v grep | grep 'nginx: master'"; break; case 'php-fpm': cmd="psefgrepvgrepgrepphpfpm:master";break;caseps:cmd = "ps -ef | grep -v grep | grep 'php-fpm: master'"; break; case 'ps': cmd = "{val} -ef | grep -v grep | grep {key}"; break; case 'df': cmd = "{val} -ha"; break; case 'mysql': config=configloader(database);if(config = config_loader('database'); if (config['deploy']) { hostname=explode(,,hostname = explode(',', config['hostname'])[0]; } else { hostname=hostname = config['hostname']; } val = Db::connect("mysql://{config['username']}:{config['password']}@{hostname}:{config['hostport']}/{config['database']}#{$config['charset']}") ->query('show status like "Uptime"'); break; }

if (!empty($cmd)) {
  $cmd .= ' 2>&1';
  exec($cmd, $val);
}

} // 校验服务状态 foreach (servicesasservices as key => item) { switch (key) { case 'nginx': // nginx case 'php-fpm': // php-fpm case 'redis': // redis case 'queue': // 队列 if ((is_array(item) && !empty(item))) { returnData[returnData[key]['status'] = 'running'; } else { resultReason=resultReason = key . '服务进程异常'; break; } break; case 'mysql': // mysql if ((is_array(item) && !empty(item))) { returnData[returnData[key]['status'] = 'running'; } else { resultReason = 'mysql连接异常'; break; } break; case 'disk': // 磁盘 result = false; if (is_array(item)) { foreach (item as k=>k => v) { v=trim(v = trim(v); if (substr(v, -1) === '/' && str_replace('/', '', str_replace('%', '', trim(substr(v, -5)))) < 95) { result = true; } } } returnData[key][status]=key]['status'] = result ? 'running' : 'aborting'; if (result) { returnData[key]['status'] = 'running'; } else { resultReason = '磁盘空间剩余不足5%'; break; } break; } }

  return empty($resultReason) ? apiReturnFail(200, '请求成功,服务运行正常') :
  apiReturnFail(201, $resultReason);
}`