好,能跑起来就说明两个问题,
一,加载器成功了,
二,我没蒙错。
接下来就开始来点稍干的了,先看代码
public function onRequest($request,$response){
$response->end("hello");
}
这个 onRequest 是HTTP服务的核心,没有它,就没法接收来自客户端的请求,也就没法给客户端返回正确的内容,最重要的是如果没有它,HTTP服务跑不起来。
这个回调包含两个参数 $request和$response ,如字面意思 $request就是HTTP请求对像接收到的客户端请求的相关信息,包含GET,POST,COOKIE,HEADER等,看文档。$response就是服务端给客户端回应时对象,看文档。
接下来就来处理它。
首先,我们要有一个总调度,它主要实现的功能就是接收这两个参数,然后路由分析路径,并根据返回的路由信息加载对应的项目文件。看到了吗,加载,这两个字终于用上了。
创建文件 frame/Lib/App.php,贴代码
<?php
namespace Piz;
class App
{
//实例
private static $instance;
//防止被一些讨厌的小伙伴不停的实例化,自己玩。
private function __construct ()
{
}
//还得让伙伴能实例化,并且能用它。。
public function get_instance(){
if(is_null (self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
public function http($request,$response){
print_r($request);
$response->end(var_export ($response,TRUE));
}
}
修改frame/Lib/Server.php,再贴
<?php
namespace Piz;
class Server
{
public $server;
public function __construct(){
$this->server = new \swoole_http_server('0.0.0.0',9501);
$this->server->on('start', [$this, 'onStart']);
$this->server->on('request' ,[$this,'onRequest']);
$this->server->start();
}
public function onStart($server){
echo "服务启动 http://0.0.0.0:9501",PHP_EOL;
}
public function onRequest($request,$response){
App::get_instance()->http ($request,$response);
}
public function onClose($server,$fd){
}
}
运行启动文件 /start.php,看控制台
root@localhost:/piz$ php start.php
服务启动 http://0.0.0.0:9501
Swoole\Http\Request Object
(
[fd] => 1
[header] => Array
(
[host] => 192.168.1.111:9501
[connection] => keep-alive
[upgrade-insecure-requests] => 1
[user-agent] => Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
[accept] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
[accept-encoding] => gzip, deflate
[accept-language] => zh-CN,zh;q=0.9
)
[server] => Array
(
[request_method] => GET
[request_uri] => /
[path_info] => /
[request_time] => 1523500869
[request_time_float] => 1523500869.6587
[server_port] => 9501
[remote_port] => 2751
[remote_addr] => 192.168.1.100
[master_time] => 1523500869
[server_protocol] => HTTP/1.1
[server_software] => swoole-http-server
)
[request] =>
[cookie] =>
[get] =>
[files] =>
[post] =>
[tmpfiles] =>
)
看浏览器
OK,漂亮。
小伙伴们不要在意我的host,我是在WIN10上开发,VBOX上运行。