worker server 进程 ¶
简要 ¶
- 更灵活
- 支持workerman所有的参数
- 支持workerman所有的回调方法定义 (回调方法必须是public类型)
注解支持 ¶
建议使用除WorkerServer
以外的其他几个server注解,方便了解项目情况
- 支持
WorkerServer
可以自定义 protocol - 支持
WorkerWebServer
固定 protocol为 http - 支持
WorkerWebSocket
固定 protocol为 websocket - 支持
WorkerTcpServer
固定 protocol为 tcp - 支持
WorkerUdpServer
固定 protocol为 udp - 支持
WorkerTextServer
固定 protocol为 text
配置 ¶
在 config/shiyun/worker_server.php
中配置
php
return [
// 使用注解注册,存在server的路径,支持*
'annotation_path' => [
'addons/moduleA/worker',
'addons/*/worker',
'addons/*/*/worker',
]
'worker_class' => 'app\http\Worker',
];
示例 ¶
也支持使用自定义类作为Worker服务入口文件类。
例如,我们可以创建一个服务类(必须要继承 ),然后设置属性和添加回调方法
- WorkerWebServer 服务
php
<?php
namespace addons\moduleA\worker;
use shiyunWorker\annotation\WorkerWebServer;
#[WorkerWebServer()]
class WorkerWebServer extends \shiyunWorker\WorkermanServer{
}
- WorkerWebSocket 服务
php
<?php
namespace addons\moduleA\worker;
use shiyunWorker\annotation\WorkerWebSocket;
#[WorkerWebSocket()]
class WorkerWebSocket extends \shiyunWorker\WorkermanServer{
}
php
<?php
namespace app\http;
use shiyunWorker\WorkermanServer;
#[WorkerServer('')]
class WorkerServer extends WorkermanServer
{
// 协议支持 tcp udp unix http websocket text
protected $protocol = '';
// 监听地址
protected $host = '';
// 监听端口
protected $port = '';
// 完整的socket地址,即 [ protocol://host:port ]
protected $socket = 'http://127.0.0.1:8000';
// worker名称
protected $worker_name = 'SocketServer';
// 进程数
protected $worker_count = 1;
// 消息监听
public function onMessage($connection,$data)
{
$connection->send(json_encode($data));
}
// 进程启动
public function onWorkerStart($worker)
{
}
// 进程重启
public function onWorkerReload($worker)
{
}
// 连接接入
public function onConnect($connection)
{
}
// 连接断开
public function onClose($connection)
{
}
// 连接错误
public function onError($connection, $code, $msg)
{
echo "error [ $code ] $msg\n";
}
}
指令 ¶
linux命令行下面可以支持下面指令操作
sh
# 启动
php think worker:server
php think worker:server start
php think worker:serve start -d
# 重载
php think worker:server reload
# 重起
php think worker:server restart
# 停止
php think worker:server stop
# 状态
php think worker:server status
访问 ¶
启动后,然后在浏览器里面访问
http://localhost:8000