支持websocket模式
注:think-worker(5.x) 不支持 windows 环境,请在 linux 环境下安装。
composer require topthink/think-worker:^5.0
/app/event.php
<?php // 事件定义文件 return [ 'bind' => [ ], 'listen' => [ 'AppInit' => [], 'HttpRun' => [], 'HttpEnd' => [], 'LogLevel' => [], 'LogWrite' => [], // 新增worker.init事件,用于初始化worker 'worker.init' => ['wokmansse\common\WorkerInit'],//根据扩展配置项【部署模式】不同,开启一个port或连续的两个port ], 'subscribe' => [ ], ];
/config/process.php
return [ //....其它配置,这里省略.... 'wokmansse' => [ 'handler' => 'wokmansse\sse\Index', 'listen' => 'http://0.0.0.0:22990',//支持sse连接 'count' => 1, // 进程数(只能是1) 'user' => 'www', 'group' => 'www', ], // 如果需要使用websocket 'wokmansse-ws' => [ 'handler' => 'wokmansse\sse\Index', 'listen' => 'websocket://0.0.0.0:22991', 'count' => 1, // 进程数(只能是1) 'user' => 'www', 'group' => 'www', ], //根据扩展配置项【部署模式】不同,以上两种保留一种或同时保留 ]; //修改完重启webman
需要使用以下 php 方法,确保以下方法未被禁用:
pcntl_wait pcntl_signal pcntl_fork pcntl_signal_dispatch pcntl_alarm 其他(待补充)
COUNT1=`ps -ef |grep WorkerMan|grep -v "grep" |wc -l`; echo $COUNT1 if [ $COUNT1 -eq 0 ];then cd /www/wwwroot/www.localhost.com php83 think worker # 宝塔安装了php多版本,可使用php83代表php 8.3 #/www/server/php/83/bin/php think worker # 或者可使用php绝对路径 fi
如果需要使用守护进程方式运行,建议使用 supervisor 来管理进程
在 linux 终端执行以下命令,以判断启动成功
ps aux | grep WorkerMan
如果输出类似以下,说明启动成功。
root 132200 0.0 0.1 217728 13776 ? S 11:43 0:00 WorkerMan: master process start_file=/www/wwwroot/www.localhost.com/think www 133280 0.0 0.2 218316 22000 ? S 11:55 0:00 WorkerMan: worker process wokmansse websocket://0.0.0.0:22990
如果只有第一条[master process]没有[worker process],则是启动失败,请到网站的runimeme目录里面查看worker22990.stdout.log日志分析原因。
runimeme
worker22990.stdout.log
使用文档和 api 文档见 doc.md
基于workerman实现的SSE(Server-Sent Events)推送
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
workman-sse
workman 推送系统
请使用 composer 安装think-worker后再安装本扩展
tp8.0
注:think-worker(5.x) 不支持 windows 环境,请在 linux 环境下安装。
使用
修改配置
/app/event.phpwebman 修改配置
/config/process.php环境要求
需要使用以下 php 方法,确保以下方法未被禁用:
tp 启动脚本,start.sh
如果需要使用守护进程方式运行,建议使用 supervisor 来管理进程
启动成功
在 linux 终端执行以下命令,以判断启动成功
ps aux | grep WorkerMan如果输出类似以下,说明启动成功。
如果只有第一条[master process]没有[worker process],则是启动失败,请到网站的
runimeme目录里面查看worker22990.stdout.log日志分析原因。使用文档和 api 文档见 doc.md