2011-12-09 54 views
4

我在業餘時間慢慢地學習和學習redis,我對可用於爲訂閱頻道的網站創建'偵聽器'的選項感興趣,並且在收到消息時更新網頁。創建一個redis監聽器 - 可能在php中?

現在,從我以前的actionscript日子和當前的javascript工作中,我非常熟悉給定這兩種語言的聽衆的概念。然而,我的服務器端編程fu實際上只擴展到PHP,一些rails,一些python和僞node.js(我是一個相當有經驗的javascript人,並且瞭解node.js的作用)。

由於我的主要技能集在於PHP,我想知道是否甚至可以做一個持久連接/套接字與PHP,從而在PHP中創建一個監聽器?

由於我猜這實際上不可能(或者相當於用錘子固定擋風玻璃裂縫),有些服務器端選項是什麼?是否有可能創建一個使用持久連接到redis服務器(當前位於localhost)的JavaScript偵聽器。 Socket.io是我應該看看的東西嗎?

任何有關redis初學者的見解都將不勝感激。


編輯我發現了一個偉大的帖子在這裏How to use redis PUBLISH/SUBSCRIBE with nodejs to notify clients when data values change?這部分回答我的問題。

除了node.js還有一種方法可以做同樣的事嗎?我可以完全放棄php並嘗試新的項目。無論如何,這是一個私人的。

+0

我不完全得到你想要完成的。由於PHP是服務器端,頁面將在頁面加載時更新。如果你仍然在尋找一個事件/觀察者類型的機制,你可以使用這個:http://components.symfony-project.org/event-dispatcher/。這對你來說可能也很有趣。但再次,我沒有完全得到,你想要做什麼.. –

+0

@KristianHildebrandt我或多或少探索實時更新類型的應用程序...然而,在進行大量挖掘之後,唯一真正的方法就是使用類似node.js的東西來構建它,而無論如何,它都是爲了使用偵聽器而構建的。 無論如何,謝謝你的鏈接! –

+0

@Jonathan Coe:請接受答案。 – McK

回答

1

如果你所要做的只是訂閱redis中的頻道,然後做一些工作服務器端那麼它看起來像PHP將工作得很好。粗略瀏覽一下Predis和phpredis表明他們都允許訂閱一個redis頻道並註冊一個回調消息,每當收到消息時觸發。

+0

感謝您的提示!自從我發佈這個問題以來,我已經或多或少地獲得了一個相當重要的redis處理...主要是通過從mysql移植整個項目 - > redis,並使用Predis作爲中介。 非常了不起的軟件,我很興奮能夠更好地處理整個酒吧/小部件的事情,並看看能做些什麼。 –

2

redis中的發佈/訂閱機制要求訂閱的客戶端持久化,即「始終開啓」以便通過訂閱接收更新。

守護PHP腳本/應用程序是可能的,但它並不理想,也不是PHP的核心競爭力之一。

我建議尋找另一種解決方案。如果你發現你提到的node.js + redis + pub/sub文章引人注目,也許你應該更強烈地考慮它。

您也可以考慮重新考慮如何構建您的redis存儲數據。也許一套,從中可以「彈出」項目將適合相同的目的,而不需要使用redis pub/sub。