topthink/think-worker
Composer 安装命令:
composer require topthink/think-worker
包简介
workerman extend for thinkphp
README 文档
README
安装
composer require topthink/think-worker
说明
由于windows下无法在一个文件里启动多个worker,所以本扩展不支持windows平台
使用方法
HttpServer
在命令行启动服务端
php think worker
然后就可以通过浏览器直接访问当前应用
http://localhost:8080
如果需要使用守护进程方式运行,建议使用supervisor来管理进程
访问静态文件
建议使用nginx来支持静态文件访问,也可使用路由输出文件内容,下面是示例,可参照修改
- 添加静态文件路由:
Route::get('static/:path', function (string $path) { $filename = public_path() . $path; return new \think\worker\response\File($filename); })->pattern(['path' => '.*\.\w+$']);
- 访问路由
http://localhost/static/文件路径
队列支持
使用方法见 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服务响应不同的事件
配置
worker.websocket = true 时开启
路由定义
Route::get('path1','controller/action1'); Route::get('path2','controller/action2');
控制器
use \think\worker\Websocket; use \think\worker\websocket\Frame; class Controller { public function action1(){ return (new \think\worker\response\Websocket()) ->onOpen(...) ->onMessage(function(Websocket $websocket, Frame $frame){ ... }) ->onClose(...); } public function action2(){ return (new \think\worker\response\Websocket()) ->onOpen(...) ->onMessage(function(Websocket $websocket, Frame $frame){ ... }) ->onClose(...); } }
自定义worker
监听worker.init事件 注入Manager对象,调用addWorker方法添加
use think\worker\Manager; use \think\worker\Worker; //... public function handle(Manager $manager){ $worker = $manager->addWorker(function(Worker $worker){ //..其他回调或处理 //动态添加监听可参考 https://www.workerman.net/doc/workerman/worker/listen.html }); } //...
topthink/think-worker 适用场景与选型建议
topthink/think-worker 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 236.24k 次下载、GitHub Stars 达 202, 最近一次更新时间为 2016 年 10 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 topthink/think-worker 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 topthink/think-worker 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 236.24k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 216
- 点击次数: 33
- 依赖项目数: 14
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2016-10-04