【swoole】Laravel 框架使用 Swoole 代码热更新

本文介绍了在Laravel中使用Swoole进行代码热更新的场景,特别是针对游戏匹配App的WebSocket服务。文章详细阐述了匹配流程、热更新的目的、Swoole官方文档的关键点、安装Swoole和inotify的步骤,以及如何确保在onWorkerStart事件中加载可更新的代码,以实现在不重启服务的情况下自动更新匹配业务逻辑。
摘要由CSDN通过智能技术生成

业务背景

做的是一款游戏匹配的 App,PHP 使用 swoole 创建 websocket 提供游戏的匹配服务

匹配流程如下

  • 对匹配者的鉴权 (握手事件处理)
  • 匹配的业务逻辑 (比如男只能匹配到女,这块也是需要热更新,open 事件处理)
  • 匹配成功返回数据,关闭连接
  • 再往后就是 nodejs 去提供服务

想要达到的目的

在不重启服务的情况下,改变了匹配的业务逻辑代码的情况下自动热更新代码

关于热更新 swoole 官方文档

其实核心就是说你要热更新的代码必须在 onWorkerStart 事件中引入

安装 swoole 和 inotify

自己绘制的 "设计图"

如果你使用 artisan 启动 swoole 服务的话,可能会热更新失败,因为在 onWorkerStart, 之前已经载入太多类

在这里插入图片描述
index

设置常量同时实例化 MatchServer 来启动服务

require 'MatchServer.php';
if (php_sapi_name() != 'cli') die('请用cli模式启动');
define('ROOT_PATH',dirname(dirname(dirname(__DIR__))).'/');
define('PORT',20005);
$server = new MatchServer();

MatchServer

class MatchServer{
   
    private $server;
    protected $application;

    function __construct ()
    {
   
        // 创建swoole_table,用于进程间数据共享
        $table = new swoole_table(1024);
        $table->column('fd', swoole_table::TYPE_INT);
        $table->column('uid', swoole_table::TYPE_INT);
        $table->column('gameType', swoole_table:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值