Flex json自动更新datagrid

时间:2011-04-17 21:41:44

标签: php mysql flex json

我正在使用Flex 4.拥有PHP后端和mysql数据库,其中一个表由多行组成。

我从结果事件中获取原始数据并使用JSON对其进行解码。然后我将数据转储到我用作datagrid数据提供程序的ArrayCollection中。

我的问题是,如果有人在mysql表中插入新行,以便我可以自动刷新我的ArrayCollection,从而无缝地一次更新我的datagrid一个元素?现在,它只是一次性呼叫,连接已关闭。如果有人在数据库中插入新行,我的程序无法识别,除非我重新启动它。每当将一个新行插入mysql数据库时,我想自动更新AC。有没有办法可以“倾听”这种变化?

2 个答案:

答案 0 :(得分:0)

不,没有自动方法可以做到这一点。但您可以定期“ping”您的服务器并要求新行。使用

setInterval(myFunctionName, timeToWaitBetweenEachCallInMilliseconds);

这样做。

答案 1 :(得分:0)

啊,你偶然发现了网络领域的古老问题:民意调查还是推动?

轮询意味着您每隔几秒或几分钟对服务器执行一次ping操作,以检查是否有任何已更改的数据。如果有,您的服务器会向您发送新的已更改数据,这些数据会在您的前端进行适当更新。关于如何解释哪个数据需要更新的“协议”完全取决于您,因为没有真正的标准(因为数据本身在系统之间可能非常不同)。在许多不需要关键“实时”信息的系统中,轮询仍然在使用,并且由于它不需要一致的连接,因此对于像移动设备这样的互联网来说尤其有用。此外,一切都是HTTP请求,因此没有可以阻止它的企业防火墙。

推送意味着您的前端和后端之间有一个持续的连接,这通常是通过RTMPT(HTTP UDP协议绕过企业防火墙,但不是100%)。如果您需要快速交付给您的实时数据(比如财务数据),那就太棒了。但是,用户需要一致的Internet连接,并且您需要具有能够处理连接数量和会话管理的服务器。通常,大多数人最终使用Java,因为有许多库可以处理推送(BlazeDS,GRaniteDS,Livecycle,Wowza等)。

由于您使用的是PHP,因此您可能需要使用轮询作为解决方案,但需要自己实现。我确信有些图书馆可以帮助你。