kcloze/swoole-jobs源碼分析

所需php擴展

https://github.com/alanxz/rab...
amqp 須要先安裝rabbitmq-c
swoole
redisphp

源碼難度:

易於理解,便於修改git

主要使用知識點:

swooleprocess
swoole定時器
信號通訊
github

使用難度:

簡單, 易於嵌入框架redis

發現問題:

查看github倉庫, 該代碼已經半年沒有更新,新的swoole版本中,process是沒法在swooletimer中使用,由於swooletimer中會自動建立coroutine,而process沒法在協程中建立api

解決方法:

  1. 在入口文件增長 (已測試)

swoole_async_set([安全

'enable_coroutine' => false

]);swoole

  1. 修改process爲協程 (未測試)

穩定性:

源碼中有一段註釋:
//黑科技:實踐中發現有可能進不到業務代碼,形成消息丟失,job執行太快或者太慢(業務出現異常),worker進程都安全退出
本身測試中, 開啓了3個redis隊列
https://www.showdoc.cc/server...框架

測試結果: 推送3000條數據

最小進程數符合預期
最大進程數符合預期
結果無丟失async

執行效率

受限於redis隊列以及job任務測試

相關文章
相關標籤/搜索