PHP Swoole+Laravel框架HTTP服务加速 - Zanealancy博客

PHP Swoole+Laravel框架HTTP服务加速

1. php-fpm 的优缺点

优点:部署简单 调试方便 基于传统 php 的项目非常多,易于参考。

缺点:每次 http 请求都要加载全部的项目文件 php-fpm 性能不佳,并发性能不好 核心不支持异步IO处理,IO密集型请求响应变长 对网络通信协议的支持不好。

我们用的 PHP 主要用于 web 开发,通过 nginx、apache 等服务端程序调用 php-fpm 处理服务端的业务逻 辑,处理完后 php 撤消内存并返回结果。一个 web 请求就要加载一次 php 的全部文件,需要的系统资源 开销很大,这是目前 php-fpm 的缺点之一;并且因为 php-fpm 在一次请求结束就释放内存,无法做连接池,也不合适 service 端的开发。

2. Swoole避免文件的反复加载

swoole中,可以在onworkerstart 的时候提前一次性把一些必要的文件和配置加载好,不必每次receive重复加载一遍。将PHP代码加载到内存中,拥有更长的生命周期,不用反复加载和释放内存,提高运行效率。

3. Swoole给Laravel框架加速配置

前面已经安装了laravelS,这里直接通过nginx配置替换php-fpm,由laravelS接管。

编辑nginx配置如下:

upstream laravels {
    # 通过 IP:Port 连接
    # 通config/laravels.php中listen_ip listen_port保持一致
    server 127.0.0.1:5201 weight=5 max_fails=5 fail_timeout=30s;
    keepalive 16;
}
server {
    listen       80;
    server_name  blog.ebeast.club;

    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    root   /项目目录/public;
    index  index.html index.htm index.php;
    location / {
        try_files $uri @laravels;
    }
    location @laravels {
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header Scheme $scheme;
        proxy_set_header Server-Protocol $server_protocol;
        proxy_set_header Server-Name $server_name;
        proxy_set_header Server-Addr $server_addr;
        proxy_set_header Server-Port $server_port;
        proxy_pass http://laravels;
    }
}

最后重启nginx。

阿里云安全可靠、弹性可伸缩的云计算服务。百款产品直降,平均降幅20%,下方点击直达: