继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

SWOOLE 从入门到放弃之写个小框架(六)

Pizzaaa
关注TA
已关注
手记 23
粉丝 77
获赞 47

好,能跑起来就说明两个问题,
一,加载器成功了,
二,我没蒙错。

接下来就开始来点稍干的了,先看代码

    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上运行。

打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP