2016-12-28 51 views
2

我想在PHP中使用redis pub/sub,但是我擔心PHP不能成爲唯一的工具:訂閱者需要始終可以調用,因爲php不是作爲守護進程來運行的,我不能相信它可靠永遠是「開」。 那麼,什麼是對PHP世界的解決方案:是redis pub/sub在PHP中是否真實?

  1. 不使用的pub/sub,使用其他的Redis'與crontask儲存推出PHP每隔x分鐘
  2. 使用經紀人至極將調用PHP?
  3. 其他?

隨着「2」我的意思是:使用一個nodejs/java/fooBar服務器,它是守護進程的訂閱者並回叫php(使用http/cli或其他)。

我找不到比「2」更好的主意。 ,但它似乎很不起作用...

你的意見是什麼?


編輯: 你將如何做到這一點使用雲平臺就像platform.sh至極不給機會,有一個supervisor.d相似嗎?

+1

只需運行php守護進程即可爲我工作。Laravel支持redis pub/sub –

+1

我不知道php技術,但我認爲_were_用於守護PHP代碼。 –

+0

@MikeMiller它工作得很好嗎?它是長期穩定的還是您必須制定解決方法,例如每X次重新啓動守護進程? 我擔心它會結束使用任務的糟糕工具:PHP構建爲一種短生命腳本語言,例如我知道它具有交叉引用數組的memleaks。 – Bruno

回答

0

感謝的評論,我發現了一個令人滿意的路要走:使用supervisor.d的,這將重新啓動一個symfony的命令腳本:

  • set_time_limit(0)
  • 一個無限循環
  • 阻塞調用到redis(一個BRPOP,最大路程比read_write_timeout低1秒)
    • 重要的是做一個阻塞命令,爲了不消耗所有的CPU時間
    • 我會事件去一個真正的發佈/訂閱,但現在,我只有一個偵聽器,這並不重要

什麼我可以從一個角度早一點告訴:

  • supervisor.d真的很容易安裝/配置,文檔是完整的,我沒有運行任何問題,這是非常罕見的+滿意!
  • 它似乎運作良好
  • 寫入日誌,因此它可能是更容易即將成爲崩潰理解
  • 在X連續和接近崩潰的情況下,該服務被停止,我沒有找到一個方法來這是真的有問題,我想我會去this solutiondoc
  • 像@Mike米勒說:「唯一要記住你的方式是你需要重新啓動後的代碼更改或將繼續運行您的舊代碼
相關問題