基于swoole扩展,建立http服务器

一、服务端代码:

class Http_server
{
    public $host = '127.0.0.1';
    public $port = 9911;
    public $http;

    public function __construct()
    {
        $this->http = new swoole_http_server($this->host,$this->port);
        $this->http->set([
            'enable_static_handler' => true,//开启静态文件分发
            'document_root' => '/www/data'//静态文件根目录
        ]);
        $this->http->on('request',[$this,'onRequest']);
        $this->http->start();
    }

    /**
     * @FunctionName        :onRequest
     * @CreateTime          :2019 2019/1/1 22:15
     * @Author              :Robin
     * @Descript            监听http请求事件
     * @param $request      mixed 接收的数据
     * @param $response     mixed 返回的数据
     */
    public function onRequest($request,$response)
    {
        echo '
';
        var_dump($request->get);
        $response->end("

httpserver

"); } } $obj = new Http_server();

二、静态文件:




    
    Title


This is Httpserver!

三、效果图:

服务端:
在这里插入图片描述
服务端带参数访问:

在这里插入图片描述
此时服务端打印接收到的参数
在这里插入图片描述
服务端直接访问静态资源:
基于swoole扩展,建立http服务器_第1张图片
对比两次请求返回的html,访问静态资料时,服务端返回的是/www/data/目录下的index.html文件,带参数访问时,服务端返回的是代码中end()方法中指定的字符串。

swoole的指出,swoole的httpserver对Http协议的支持并不完整,建议仅作为应用服务器。并且在前端增加Nginx作为代理。

在上述验证中,我都是访问的本机127.0.0.1,因为在外网测试访问不了(端口已经开放,防火墙也关了),不知道是swoole的httpserver仅支持内网还是阿里云服务器的问题,这点有待后来再验证了。

四、需要注意的问题:

服务端监听的端口一定要开放,否则只能本机访问,还有就是老生常谈的防火墙问题

你可能感兴趣的:(php)