php检查服务运行状态,检查的服务有: nginx php-fpm redis disk queue mysql
代码如下 `public function checkRunningStatus() {
resultReason = ''; // 服务列表 socket_port = config('app.filter_ws_port'); foreach (key => &val) { cmd = ''; switch (val) { case 'nginx': cmd = "ps -ef | grep -v grep | grep 'nginx: master'"; break; case 'php-fpm': cmd = "{val} -ef | grep -v grep | grep {key}"; break; case 'df': cmd = "{val} -ha"; break; case 'mysql': config['deploy']) { config['hostname'])[0]; } else { 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 (key => item) { switch (key) { case 'nginx': // nginx case 'php-fpm': // php-fpm case 'redis': // redis case 'queue': // 队列 if ((is_array(item) && !empty(item))) { key]['status'] = 'running'; } else { key . '服务进程异常'; break; } break; case 'mysql': // mysql if ((is_array(item) && !empty(item))) { key]['status'] = 'running'; } else { resultReason = 'mysql连接异常'; break; } break; case 'disk': // 磁盘 result = false; if (is_array(item)) { foreach (item as v) { v); if (substr(v, -1) === '/' && str_replace('/', '', str_replace('%', '', trim(substr(v, -5)))) < 95) { result = true; } } } returnData[result ? 'running' : 'aborting'; if (result) { returnData[key]['status'] = 'running'; } else { resultReason = '磁盘空间剩余不足5%'; break; } break; } }
return empty($resultReason) ? apiReturnFail(200, '请求成功,服务运行正常') :
apiReturnFail(201, $resultReason);
}`