topthink / think-swoole
Swoole extend for thinkphp
Installs: 129 003
Dependents: 16
Suggesters: 0
Security: 0
Stars: 463
Watchers: 22
Forks: 102
Open Issues: 5
Requires
- php: ^8.0
- ext-json: *
- ext-swoole: >=4.6
- nette/php-generator: ^4.0
- open-smf/connection-pool: >=1.0
- stechstudio/backoff: ^1.2
- swoole/ide-helper: ^4.3
- symfony/finder: ^4.3.2|^5.1
- topthink/framework: ^6.0|^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/var-dumper: ^4.3|^5.1
- topthink/think-queue: ^3.0
- topthink/think-tracing: ^1.0
- 4.0.x-dev
- v4.0.13
- v4.0.12
- v4.0.11
- v4.0.10
- v4.0.9
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- 3.0.x-dev
- v3.0.10
- v3.0.9
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- 2.0.x-dev
- v2.0.18
- v2.0.17
- v2.0.16
- v2.0.15
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.0
- dev-master
This package is auto-updated.
Last update: 2024-12-11 09:39:26 UTC
README
安装
首先按照Swoole官网说明安装swoole扩展,然后使用
composer require topthink/think-swoole
安装swoole扩展。
使用方法
直接在命令行下启动HTTP服务端。
php think swoole
启动完成后,默认会在0.0.0.0:8080启动一个HTTP Server,可以直接访问当前的应用。
swoole的相关参数可以在config/swoole.php
里面配置(具体参考配置文件内容)。
如果需要使用守护进程方式运行,建议使用supervisor来管理进程
访问静态文件
4.0开始协程风格服务端默认不支持静态文件访问,建议使用nginx来支持静态文件访问,也可使用路由输出文件内容,下面是示例,可参照修改
- 添加静态文件路由:
Route::get('static/:path', function (string $path) { $filename = public_path() . $path; return new \think\swoole\response\File($filename); })->pattern(['path' => '.*\.\w+$']);
- 访问路由
http://localhost/static/文件路径
队列支持
4.0开始协程风格服务端没有task进程了,使用think-queue代替
使用方法见 think-queue
以下配置代替think-queue里的最后一步:监听任务并执行
,无需另外起进程执行队列
return [ // ... 'queue' => [ 'enable' => true, //键名是队列名称 'workers' => [ //下面参数是不设置时的默认配置 'default' => [ 'delay' => 0, 'sleep' => 3, 'tries' => 0, 'timeout' => 60, 'worker_num' => 1, ], //使用@符号后面可指定队列使用驱动 'default@connection' => [ //此处可不设置任何参数,使用上面的默认配置 ], ], ], // ... ];
websocket
新增路由调度的方式,方便实现多个websocket服务
配置
swoole.websocket.route = true 时开启
路由定义
Route::get('path1','controller/action1'); Route::get('path2','controller/action2');
控制器
use \think\swoole\Websocket; use \think\swoole\websocket\Event; use \Swoole\WebSocket\Frame; class Controller { public function action1(){//不可以在这里注入websocket对象 return \think\swoole\helper\websocket() ->onOpen(...) ->onMessage(function(Websocket $websocket, Frame $frame){ //只可在事件响应这里注入websocket对象 ... }) ->onClose(...); } public function action2(){ return \think\swoole\helper\websocket() ->onOpen(...) ->onMessage(function(Websocket $websocket, Frame $frame){ ... }) ->onClose(...); } }