2011-04-17 54 views
2

我正在使用Flex 4.有一個由多行組成的表的PHP後端和mysql數據庫。Flex json自動udpate數據網格

我從結果事件中取出原始數據並使用JSON對其進行解碼。然後我將數據轉儲到一個ArrayCollection中,用作我的數據網格的數據提供者。

我的問題是如何判斷某人何時向mysql表中插入新行,以便我可以自動刷新我的ArrayCollection,從而一次無縫更新我的datagrid中的一個元素?現在,這只是一次電話,連接已關閉。如果有人在數據庫中插入新行,我的程序無法識別,除非我重新啓動它。我想自動更新AC每當一個新行插入到MySQL數據庫。有什麼辦法可以「聽」這種改變?

謝謝!

+0

嗨邁克,你試圖做的事情叫做彗星,或者服務器推送。到目前爲止,很少有服務器支持這個。請參閱這個請求來知道如何在Apache中使用comet.http:// stackoverflow。 com/questions/603201/using-comet-with-php.Once通過設置,您將需要創建一個flex彗星橋。如果您有興趣繼續使用此解決方案,請回復,我會爲您提供flex彗星橋的代碼,正如我在某些應用程序中使用它的,但後端是用java編寫的。 – Neeraj 2011-04-18 10:27:45

回答

0

不,沒有自動的方法來做到這一點。但是您可以定期「ping」您的服務器並索要新的行。使用

setInterval(myFunctionName, timeToWaitBetweenEachCallInMilliseconds); 

要做到這一點。

0

啊,你已經偶然發現了網絡領域這個古老的問題:輪詢還是推送?

輪詢表示您每隔幾秒鐘或幾分鐘ping服務器以檢查是否有任何數據已更改。如果有,您的服務器將向您發送在您的前端進行適當更新的新更改數據。關於如何解釋需要更新哪一部分數據的'協議'完全取決於您,因爲沒有真正的標準(因爲數據本身可能會因系統而異)。現在輪詢仍然在許多不需要關鍵的「實時」信息的系統中使用,並且因爲它不需要一致的連接,所以對於像手機這樣的有線互聯網特別有用。另外,一切都是HTTP請求,所以沒有企業防火牆可以阻止它。

推送意味着您的前端和後端之間的連接通常會超過RTMPT(HTTP UDP協議以規避企業防火牆,但不是100%)。如果您需要實時數據(如說財務數據)以便快速交付給您,那將會非常好。但是,用戶需要一致的互聯網連接,並且您需要有一臺能夠處理連接和會話管理量的服務器。通常,大多數人最終會使用Java,因爲有很多庫可以處理推送(BlazeDS,GRaniteDS,Livecycle,Wowza等)。

由於您使用的是PHP,因此您可能需要使用輪詢作爲解決方案,但需要自行實施。我相信有些圖書館可以幫助你。