采用swoole主要满足部分程序需要常驻内存和高性能的要求。
代码
<?php
require_once('function.php');
$http = new swoole_http_server("0.0.0.0", 9501);
$http->on('request', function ($request, $response) {
$time = microtime(true);
$error_code = 0;
$error_msg = '';
$result = [];
try {
switch ($request->server['request_uri']) {
case '/test/':
$result = get($request);
break;
default:
$error_code = 1;
$error_msg = '请求url不正确';
break;
}
} catch (Exception $e) {
$error_code = 1;
$error_msg = $e->getMessage();
}
$time_new = microtime(true);
$response->header("Content-Type", "text/html; charset=utf-8");
$response->end(json_encode(
[
'code' => $error_code,
'msg' => $error_msg,
'time' => $time_new - $time,
'data' => $result,
]
, JSON_UNESCAPED_UNICODE));
});
$http->set(array(
'worker_num' => 4,
'reactor_num' => 4,
'daemonize' => true,
'pid_file' => __DIR__ . '/server.pid',
));
$http->start();
部署介绍
因为需要用到PHP的swoole扩展,所以运行脚本需要单独配置
php-service.ini
; 配置swoole 安装说明:https://wiki.swoole.com/wiki/page/6.html
[swoole]
extension=swoole.so
启动脚本
cd php-service
php -c /usr/local/etc/php-service.ini server.php
平滑重启
kill -USR2 `cat server.pid`
通过pid杀死服务
kill `cat server.pid`
nginx配置
server {
root /data/wwwroot/;
server_name webservice.liebiao.com;
location / {
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
proxy_set_header X-Real-IP $remote_addr;
if (!-e $request_filename) {
proxy_pass http://127.0.0.1:9501;
}
}
}