相关文章推荐
完美的硬盘  ·  AsyncRestTemplate ...·  3 月前    · 
刚毅的海龟  ·  426 Upgrade Required ...·  2 月前    · 
睿智的弓箭  ·  Day 09:UI 設計工具 Figma ...·  1 月前    · 
奔跑的茄子  ·  Farmers Cooperative ...·  11 月前    · 
活泼的企鹅  ·  全球光模块供应商TOP10最新排名:中国厂商 ...·  11 月前    · 
焦虑的扁豆  ·  4款主力车型今起降价 捷达系列最高降价1万_ ...·  1 年前    · 
高大的啄木鸟  ·  为何NBA大牌,都不来今年的篮球世界杯?_澎 ...·  1 年前    · 
绅士的葡萄酒  ·  社会组织“免税”名单大幅减少 ...·  1 年前    · 
Code  ›  Laravels实现高性能HTTP服务器开发者社区
docker header
https://cloud.tencent.com/developer/article/2017325
大力的西瓜
2 年前
Petrochor

Laravels实现高性能HTTP服务器

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
Petrochor
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > Laravels实现高性能HTTP服务器

Laravels实现高性能HTTP服务器

作者头像
Petrochor
发布 于 2022-06-07 15:48:58
482 0
发布 于 2022-06-07 15:48:58
举报
文章被收录于专栏: Stephen Stephen

使用Laravel 框架在应用中通过 Swoole 实现高性能 HTTP 服务器、WebSocket 服务器、协程、异步事件监听、异步任务队列、毫秒级任务调度、MySQL 线程池等高级特性,从而提高 Laravel 应用整体性能。

Swoole替代了nginx和fastcgi,避免了每次请求时框架文件的重复加载。Laravels是基于Swoole整合到Laravel框架中的三方扩展,可以很轻松实现Swoole的高性能特性,本篇将使用Laravels实现高性能HTTP服务器。

我是在自己构建的Docker环境下,用Dockerfile构建的PHP-WEB环境,方法请浏览《 Dockerfile PHP环境apt包加速及扩展支持(优化) 》

LaravelS文档: https://github.com/hhxsv5/laravel-s

Docker容器
docker run --name laravels -d -p 81:80 -v ~/Web/laravels/:/var/www/html -v ~/Docker/nginx/laravel.conf:/etc/nginx/nginx.conf web:2.0
安装Laravel

进入Docker容器,安装Laravel,我用的版本是Laravel6

composer create-project --prefer-dist laravel/laravel blog "6.*"
配置nginx
events {
    worker_connections 1024;
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    server {
        listen 80;
        server_name example.com;
        root /var/www/html/laravels/public;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options "nosniff";
        index index.html index.htm index.php;
        charset utf-8;
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }
        error_page 404 /index.php;
        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        location ~ /\.(?!well-known).* {
            deny all;
}

配置完成后,会映射到容器的 nginx 配置,然后重启容器

docker restart laravels
ab吞吐率测试

结果 :每秒吞吐率 37.96

下面开始使用LaravelS实现高性能HTTP服务器

修改nginx配置

我们知道在使用 Nginx 作为 Web 服务器的时候,前端资源文件,比如 CSS、JS、图片等静态资源都是通过 Nginx 进行处理的,比较高效,而 PHP 脚本请求这种动态资源都是转发到后端 PHP-FPM 进程进行处理,如果要基于 Swoole 实现高性能 HTTP 服务器,则这个 HTTP 服务器替代的也是 PHP-FPM 的职能,也就是说,我们将原本转发到 PHP-FPM 进程的请求转发给 Swoole 进行处理。在本例中,就是转发给 LaravelS 服务。

events {
    worker_connections 1024;
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    upstream swoole {
        # Connect IP:Port
        server 127.0.0.1:5200 weight=5 max_fails=3 fail_timeout=30s;
        keepalive 16;
    server {
        listen 80;
        server_name blog-s.test;
        root /var/www/html/laravels/public;
        index index.php index.html index.htm;
        # Nginx 处理静态资源,LaravelS 处理动态资源
        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://swoole;
}
重启Docker容器,在Docker容器中,启动LaravelS HTTP服务器
# 重启Docker容器
 
推荐文章
完美的硬盘  ·  AsyncRestTemplate (Spring Framework 5.3.9 API)
3 月前
刚毅的海龟  ·  426 Upgrade Required - HTTP | MDN
2 月前
睿智的弓箭  ·  Day 09:UI 設計工具 Figma 快速入門 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
1 月前
奔跑的茄子  ·  Farmers Cooperative Elevator Co. MN - Stock Quotes
11 月前
活泼的企鹅  ·  全球光模块供应商TOP10最新排名:中国厂商首登第一-北京赛飞光电科技有限公司 | 主要从事光电子产品、高科技仪器设备的代理销售和技术服务
11 月前
焦虑的扁豆  ·  4款主力车型今起降价 捷达系列最高降价1万_部门动态_重庆市发展和改革委员会
1 年前
高大的啄木鸟  ·  为何NBA大牌,都不来今年的篮球世界杯?_澎湃号·湃客_澎湃新闻-The Paper
1 年前
绅士的葡萄酒  ·  社会组织“免税”名单大幅减少 评级与税收挂钩合理吗?_手机新浪网
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号