hylm/laravel-swoole-study

基于laravel加速的swoole扩展功能,目前仅用于测试和学习,扩展包尚未完善

dev-master 2021-07-09 01:26 UTC

This package is not auto-updated.

Last update: 2025-06-20 20:21:57 UTC


README

介绍

laravel框架加速swoole扩展

要求

依赖说明
PHP推荐PHP7+
Swoole>= 1.7.19 从2.0.12开始不再支持PHP5 推荐4.2.3+
Laravel/Lumen推荐5.6+

安装教程

1.通过Composer安装(packagist)。

composer require hylm/laravel-swoole-study
# 确保你的composer.lock文件是在版本控制中

2.注册Service Provider。

  • Laravel: 修改文件config/app.phpLaravel 5.5+支持包自动发现,你应该跳过这步
      'providers' => [
          //swoole扩展
                 \Hylm\LaravelSwoole\Swoole\SwooleServiceProvider::class
      ]
    

    3.修改配置文件 vendor/hylm/laravel-swoole-study/Swoole/Config/swoole_server.php

使用说明

  • 操作命令 php artisan swoole:http {start|stop|restart|reload|infos}
命令说明
start启动LaravelS,展示已启动的进程列表 "ps -ef|grep laravels"
stop停止LaravelS,并触发自定义进程的onStop方法
restart重启LaravelS:先平滑Stop,然后再Start;在Start完成之前,服务是不可用的
reload平滑重启所有Task/Worker/Timer进程(这些进程内包含了你的业务代码),并触发自定义进程的onReload方法,不会重启Master/Manger进程;修改config/laravels.php后,你只有调用restart来完成重启
infos显示组件的版本信息

与Nginx配合使用(推荐)

示例

gzip on;
gzip_min_length 1024;
gzip_comp_level 2;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;
gzip_vary on;
gzip_disable "msie6";
upstream swoole {
    # 通过 IP:Port 连接
    server 127.0.0.1:5200 weight=5 max_fails=3 fail_timeout=30s;
    # 通过 UnixSocket Stream 连接,小诀窍:将socket文件放在/dev/shm目录下,可获得更好的性能
    #server unix:/yourpath/laravel-s-test/storage/laravels.sock weight=5 max_fails=3 fail_timeout=30s;
    #server 192.168.1.1:5200 weight=3 max_fails=3 fail_timeout=30s;
    #server 192.168.1.2:5200 backup;
    keepalive 16;
}
server {
    listen 80;
    # 别忘了绑Host
    server_name laravels.com;
    root /yourpath/laravel-s-test/public;
    access_log /yourpath/log/nginx/$server_name.access.log  main;
    autoindex off;
    index index.html index.htm;
    # Nginx处理静态资源(建议开启gzip),LaravelS处理动态资源。
    location / {
        try_files $uri @laravels;
    }
    # 当请求PHP文件时直接响应404,防止暴露public/*.php
    #location ~* \.php$ {
    #    return 404;
    #}
    location @laravels {
        # proxy_connect_timeout 60s;
        # proxy_send_timeout 60s;
        # proxy_read_timeout 120s;
        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;
        # “swoole”是指upstream
        proxy_pass http://swoole;
    }
}

参与贡献

  1. Hylm 本仓库
  2. 新建 Hylm_master 分支
  3. 提交代码
  4. 新建 Pull Request

特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/