[Gateway workerman]Timer獨立business部屬,方法討論

horskin

背景:
因為如果game logic 有error會導致timer也停止,所以打算將Timer獨立business使其不被business error打斷
專案:Laravel + redis

方案討論:
在原本Laravel專案已經有一套gateway workerman,為了在開一套所以直接複製資料夾在run 一個gateway排程
複製出來的專案就專門跑Timer所以只開business, gateway register都是使用原本的gateway workerman
目前實作方法:使用redis queue將要運行的timer放進去,在Timer gateway 中實作死循環在onWorkerStart,一直輪尋將queue Timer讀取出來生成,並處理業務邏輯。
目前這樣的作法變成說,logic兩邊都要寫,而且會多一個專案出來,請問這樣的作法是可以的嗎?還是版大各位有推薦的方法呢?

375 2 0
2个回答

不败少龙

繁体字认不全

  • horskin 2023-05-17

    非常抱歉,因為我的輸入法只有繁體Q_Q

nitron

我翻译一下,大意就是

原本Laravel项目已经有gateway workerman,新项目直接复制老项目再跑一个gateway
复制出来的项目跑Timer所以只开business, gateway register都是使用原本的gateway workerman
目前的实现方法:將要运行的Timer放Redis队列,在Timer gateway中的onWorkerStart跑while(true),轮询redis队列里的Timer,并处理业务逻辑。
现在这样两个项目都要写代码逻辑,而且都相互独立,请问这样的方法可以吗?还是各位大大有别的方式处理

题主本意是想着一个项目内搞定

🔝