适合SWOOLE_HTTP_SERVER用的服务脚本 api接口使用的ZPHP框架开发,整合了swoole的swoole_http_server,由于测试机上cli了很多php脚本,重启php脚本变的比较麻烦,写了个脚本来进行启动/重启/状态/重载。
api接口使用的ZPHP框架开发,整合了swoole的swoole_http_server,
由于测试机上cli了很多php脚本,重启php脚本变的比较麻烦,写了个脚本来进行启动/重启/状态/重载。
脚本使用了netstat来监控端口工作状态。
from :http://blog.molibei.com/archives/199
脚本内容如下:
#!/usr/local/php/bin/php
= 5.3.0 required " . PHP_EOL);
}
//必须安装swoole扩展
if (!get_extension_funcs('swoole')) {
exit("HttpServer must install the swoole extension " . PHP_EOL);
}
//swoole版本检查
if (version_compare(SWOOLE_VERSION, '1.7.8', '<')) {
exit("HttpServer Swoole >= 1.7.8 required " . PHP_EOL);
}
//需要exec执行命令
if (!function_exists('exec')) {
exit("HttpServer must enable exec " . PHP_EOL);
}
//读取配置文件
if (FALSE === $config = parse_ini_file("/home/server/Project/api.51zhima.com/bin/http.ini", TRUE)) {
echo 'the config file no such or no parse' . PHP_EOL;
return;
}
//关闭警告输出
if ($config['app']['disable_notice']) {
error_reporting(E_ALL & ~E_NOTICE);
}
switch ($cmd) {
case 'start'://启动
if ("" === get_bind_port_status($config)) {
HttpServer::getInstance($config);
}
echo "HttpServer is running..." . PHP_EOL;
break;
case 'stop'://停止
if ("" !== $pid = get_bind_port_status($config)) {
exec("kill -15 {$pid}");
}
exit("HttpServer is stop..." . PHP_EOL);
break;
case 'restart'://冷重启
if ("" !== $pid = get_bind_port_status($config)) {
exec("kill -15 {$pid}");
}
HttpServer::getInstance($config);
break;
case 'reload'://热重启
if ("" === $pid = get_bind_port_status($config)) {
exit("HttpServer not running..." . PHP_EOL);
}
exec("kill -USR1 {$pid}");
echo "HttpServer is reload..." . PHP_EOL;
break;
case 'status'://状态
if ("" === $pid = get_bind_port_status($config)) {
exit("HttpServer not running..." . PHP_EOL);
}
echo "HttpServer is running..." . PHP_EOL;
break;
default:
exit("Usage: HttpServer {start|stop|restart|reload|status} " . PHP_EOL);
break;
}
要给httpserver增加无人值守也很方便,在crontab里增加一条httpserver start,定期检测是否启动,未启动重启就可以了。
