国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

GatewayWorker中修改了調(diào)用的控制器代碼怎么不重啟生效

zjj35

問題描述

Laravel中使用GatewayWorker,在onMessage中調(diào)用控制器的方法,每次修改控制器中的方法要重啟GatewayWorker才生效,有什么方法能不需要重啟GatewayWorker就生效呢

如下每次修改TestController中的方法,需要重啟GatewayWorker才生效

public static function onMessage(string $client_id, $message)
{
    try {
        $msg = json_decode($message);
        $op = $msg->op ?? false;

        $controller = new TestController();
        if (method_exists($controller, $op)) {
            $request = new Request($msg['data']);
            $res = $controller->$op($request);
            // ....
        }
    } catch (Throwable $e) {
        echo "Error in onMessage: " . $e->getMessage() . "\n";
    }
}

為此你搜索到了哪些方案及不適用的原因

使用隊(duì)列、使用app()動(dòng)態(tài)加載都無(wú)效

413 4 0
4個(gè)回答

10bang

1、只能重啟
2、要么改成使用變量的方式傳遞到 onMessage 來(lái)實(shí)例化之類的處理

  • zjj35 2024-12-27

    使用變量的方式傳遞到 onMessage 來(lái)實(shí)例化,請(qǐng)問這個(gè)具體是怎么操作呢,試了很多辦法都不行

walkor 打賞

Worker::runAll(); 執(zhí)行前就載入內(nèi)存的php文件不支持reload

  • zjj35 2024-12-27

    沒有能不重啟GatewayWorker就讓修改代碼生效的方案嗎

  • qqxxr 2024-12-28

    問下ai;再就是熱更新試試

  • zjj35 2024-12-28

    ai問了無(wú)數(shù)次了都無(wú)效,有個(gè)方法就是用使用自定義命令用artisan執(zhí)行,效率太低,不適合生產(chǎn)環(huán)境頻繁請(qǐng)求

efnic

GatewayWorker只用來(lái)下發(fā)數(shù)據(jù),不要用來(lái)寫復(fù)雜的業(yè)務(wù)邏輯;
所有上行數(shù)據(jù),走h(yuǎn)ttp請(qǐng)求 Laravel。

  • efnic 2024-12-30

    GatewayWorker ===>>> 用戶端或設(shè)備端
    用戶端或設(shè)備端 ===>>> Laravel

walkor 打賞

https://github.com/walkor/workerman-filemonitor
這里有檢測(cè)程序示例,會(huì)自動(dòng)檢測(cè)文件更新自動(dòng)執(zhí)行reload加載最新代碼。

如果是新項(xiàng)目,建議用wbman配合gateway-worker插件來(lái)做,自動(dòng)更新是現(xiàn)成的,并且支持laravel的的庫(kù)例如laravel-orm等。

  • 暫無(wú)評(píng)論
??