Skip to content
官方QQ交流群
技术交流1:87208295   点此加入
技术交流2:787747122   点此加入
官网
云控制台
开放平台
关注微信公众号
代码仓库: 码云

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',
];
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{

}
<?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

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";
    }
}
<?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
# 启动
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

Copyright © 2017 10yun.com | 十云提供计算服务-IPV6 | ctocode组开发