2011-02-15 136 views
3

我面临的情况是:如何在mysql数据库中有更新时执行服务器推送?

我有一个php + mysql的web应用程序。几个用户在同一个数据库中共享资源。 我想要实现一项功能,只要数据库记录发生变化(创建,更新或删除),其他用户将立即得到通知。

我正在考虑使用ajax push engine(APE),但不知道大图是怎么回事。

(1)是否像我需要一个脚本不断检查last_update时间戳并发送通知给客户端时,检测到新的变化?

OR

(2)执行任何操作数据库表后,发送通知给客户,告诉他们重新加载数据的每一次?

哪一个更好或者其他建议如何实现?

在此先感谢!

+0

这取决于您是否必须执行任何冲突解决方案,因为他们试图更新陈旧的数据。如果是这样,您可能需要使其会话无效,并以某种方式要求他们获取新数据。也就是说,如果通过在服务上设置轮询时间间隔来确定上述第(1)点中所述的内容,那么您应该能够刷新其数据,以提供是否进行更改的状态。例如,如果它返回不同的校验和,散列,最大密钥或最后更改时间戳,那么您就知道要获取新数据。 – philwinkle 2011-02-15 05:16:33

回答

2

你最好的选择是#2,当你写那就是当你的变化正在发生的数据库,那就是当你要推。

class DatabaseModel 
{ 
    ... 

    function save($data) 
    { 
     ... // your db query 

     after_save(); 
    } 

    function after_save() 
    { 
     // push changes out using some other object 
     // e.g. MyPushClass::something_changed($this); 
    } 
} 
相关问题