workman(三)thinkphp5.0使用workerman

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

Thinkphp5.0框架如何使用workerman,这个官方手册中同样给出了示例

请移步《thinkphp5.0官方手册

但是,我觉得他这个示例吧给的可能是不太详细,不经常看可能是看不懂,我在这里大概补充一下,写一个图文示例:

1 :添加Worker.php文件

注:这个文件,其实就是你平时用的控制器,因此添加的位置,看你个人喜好,能访问到就可以,我这里是添加到了application/api/controller中,如下图所示:

111.png

内容如下:

<?php
/**
 * auther:camellia
 * date:20200815
 * email:805795955@qq.com
 */
namespace app\api\controller;
use think\Controller;
use think\Request;//使用request对象
use think\Db;//引入数据库操作类
use think\Session//使用session驱动
use think\worker\Server;
 
class Worker extends Server
{
    
    protected $socket 'websocket://127.0.0.1:8082';
 
    /**
     * 收到信息
     * @param $connection
     * @param $data
     */
    public function onMessage($connection$data)
    {
        $connection->send('我收到你的信息了');
    }
 
    /**
     * 当连接建立时触发的回调函数
     * @param $connection
     */
    public function onConnect($connection)
    {
    }
 
    /**
     * 当连接断开时触发的回调函数
     * @param $connection
     */
    public function onClose($connection)
    {
    }
 
    /**
     * 当客户端的连接上发生错误时触发
     * @param $connection
     * @param $code
     * @param $msg
     */
    public function onError($connection$code$msg)
    {
        echo "error $code $msg\n";
    }
 
    /**
     * 每个进程启动
     * @param $worker
     */
    public function onWorkerStart($worker)
    {
    }
}
复制代码

2 :在项目根目录下添加启动文件 worker.php (注意:加载框架引导文件)

文件放置位置如下图所示:

222.png

内容如下:

#!/usr/bin/env php
<?php
define('APP_PATH'__DIR__ . '/application/');
 
define('BIND_MODULE''api/Worker');
 
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';
复制代码

三:启动workerman服务

命令行进入server.php所在目录

执行:

php server.php start   #注意大小写,注意启动文件的名称是否是server.php
复制代码

执行成功如下图所示:

333.png

下边大概列举一下workerman的常用命令:

php worker.php status         #可以查看当前进程和服务器运行状态
php worker.php connections    #可以查看当前连接状态
php worker.php reload         #平滑重启服务器(用户不掉线)
php worker.php restart        #强制重启服务器(所有用户都会掉线)
php worker.php stop           #停止服务器
php worker.php start          #以调试方式启动服务器(debug状态,log将直接打印到终端)
php worker.php start -d       #以守护进程方式启动服务器(产品状态,log将被写入文件)
复制代码

了解更多,请移步《workerman官方手册

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

猜你喜欢

转载自juejin.im/post/7150468207122317326