swoole 之http服务器静态资源

目前PHP项目基本上都是http_server,nginx 代理转发。这种方式有很大优势:因为swoole是常驻内存处理简单的php和nginx处理静态html差不多。php-fpm是创建-》销毁-》创建的方式,占用更多内存,所以swoole http_server比php-fpm快很多

<?php

class Http
{
    CONST PORT = 8811;
    CONST HOST = '0.0.0.0';
    CONST ENABLE_STATIC_HANDLER = TRUE;
    CONST DOCUMENT_ROOT = '/var/www/weibo/swoole/data';

    private $http = null;

    public function __construct() {
        $this->http = new swoole_http_server(self::HOST, self::PORT);
        $this->http->set(
            [
                'enable_static_handler' => self::ENABLE_STATIC_HANDLER,
                'document_root' => self::DOCUMENT_ROOT,
            ]
        );
        $this->http->on('request', [$this, 'onRequest']);
        $this->http->start();
    }

    public function onRequest($request, $response) {
        var_dump($request->get, $request->post);
        $response->header("Content-Type", "text/html; charset=utf-8");
        $response->end("<h1>Hello Swoole.#" . rand(1000, 9999) . "</h1>");
    }
}
new Http();
  • ‘enable_static_handler’=>true,是否允许启动静态处理,如果存在会直接发送文件内容给客户端,不再触发onRequest回调
  • ‘document_root’=>’/var/www/weibo/swoole/data’,静态资源根目录

首先开启http服务器

php http.php

没有配置反向代理只能用ip访问

http://127.0.0.1:8811

在nginx.conf中添加反向代理

server {
    root /var/www/weibo/swoole/data/;
    server_name weibo.felixfan.cn;
    listen 8811;
    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:8811;
        }
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
我是通过http服务器处理的静态资源内容
</body>
</html>

 没设置允许静态资源之前,可以看到还是输出我们之前end方法内的字符串

设置静态之后,跳到默认的静态资源目录 。

访问url如:weibo.felixfan.cn:8811会自动定位到 /var/www/weibo/swoole/data/目录下



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值