php可以监听mysql数据库的变化或更新吗?......想实时,这里的实时搜索

问题描述 投票:2回答:8

我在想处理网站实时搜索的最佳方法。我唯一能想到的解决方案是每隔几秒钟就检查一次服务器,看看数据库里有没有新的东西,但这对我来说似乎不是很实用。

java php mysql real-time
8个回答
2
投票

从5.0.2开始,MySQL支持触发器。http:/dev.mysql.comdocrefman5.0entriggers.html。

但不幸的是,我对MySQL的了解还不够深,不知道你是否可以在其中做任何 "有用 "的事情来通知应用程序(在Oracle中,我想的是xp_'s)。至少你可以把一行写到一个类似审计的表中,这样你只需要在一个地方进行轮询。


1
投票

不,不能,因为MySQL不能。你需要使用其他技术,可能包括消息队列,或者流式数据库。


1
投票

我有一个应用程序,我在5-6年前工作过,现在。当时我也在寻找类似的解决方案。这是为我的前twitter应用--我自己开发的短信到网页,没有刷新。我有一个方法,我是投票的时候...但至少我没有任何可怕的页面刷新。另外...我不

这让我找到了彗星服务器。这就是我的答案。

我被引导到相信,gmail聊天使用真正的推送技术,以及反对投票。希望这能让你找到正确的方向。


0
投票

AFAIK,没有办法告诉MySQL在那里发生什么事情时ping你的脚本。

轮询似乎是唯一合理的解决方案......。


0
投票

我还没有玩过,但我注意到Symfony框架已经引入了 "事件通知"......基本上,每当应用程序的一个部分进行INSERT或UPDATE时,它都会创建一个事件,其他代码可以注册 "监听 "事件,并开火。

这都是在PHP层面,而不是数据库层面,但我想这是你要找的。

这里有一篇关于symfony事件的文章。http:/www.symfony-project.orgblog20090221using-the-symfony-event-system


0
投票

你可以使用类似 Gearman (其中有一个 MySQL接口)来提示你的php代码,当有新的事情发生时。 也许你可以使用这些事件来建立一个静态页面,上面有所有最新的信息,然后在客户端使用投票来抓取这个静态页面。

我还没有使用过Gearman,所以我不知道这种设置的细节。


0
投票

你可以尾随mysql binlog,当数据被写入binlog时,你的一些代码会被异步调用。请看我的 回答 "tail -f相当于MySQL日志数据库"


-1
投票

即使php可以,你又如何向用户显示更新,你将不得不查询服务器来显示结果。

唯一的方法就是你已经想到的,每隔5秒或更多的时间查询服务器,,,,。

© www.soinside.com 2019 - 2024. All rights reserved.