接续我们前面设置的centos虚拟机, ip: 10.0.2.7, 把端口81映射到本机的40181
实现一个http服务
我们写一个http.php
文件:
$http = new Swoole\Http\Server('10.0.2.7', 81);//外部访问: http://127.0.0.1:40181
$http->on('start', function ($server) {
echo "Swoole http server is started at http://10.0.2.7:81".PHP_EOL;
});
$http->on('request', function ($request, $response) {
$response->header('Content-Type', 'text/plain');
$response->end('Hello World, '.date('Y-m-d H:i:s').PHP_EOL);
});
$http->start();
上面启动了一个http服务, 监听81端口. 我们可以使用虚拟机10.0.2.7这个ip, 也可以使用0.0.0.0. 如果是桥接网卡, 那么可以使用任意一个ip地址.
然后执行: php http.php
启动服务
使用netstat -an | grep 81
检查下81端口监听情况:
查看下php程序的执行状况 ps -ef | grep php
:
注意图中有5个进程, 如果我们需要终止swoole服务, 可以ctrl+c, 或者kill pid
(只要kill最上面那个2483即可)
那好, 我们现在来访问一下 http://127.0.0.1:40181
Nailed it!
数据输出
我们现在来修改一下代码, 输出get参数;
$http->on('request', function ($request, $response) {
$response->header('Content-Type', 'text/plain');
$response->write(json_encode($request->get).PHP_EOL);
$response->write('Hello World, '.date('Y-m-d H:i:s').PHP_EOL);
});
URL 路由
按官方教程内容, 还可以根据 $request->server['request_uri']
实现路由。如:http://127.0.0.1:9501/test/index/?a=1
,代码中可以这样实现 URL 路由。
$http->on('Request', function ($request, $response) {
list($controller, $action) = explode('/', trim($request->server['request_uri'], '/'));
//根据 $controller, $action 映射到不同的控制器类和方法
(new $controller)->$action($request, $response);
});