Php 如何自动检测对数据库的更改并生成jquery通知?

Php 如何自动检测对数据库的更改并生成jquery通知?,php,jquery,notifications,Php,Jquery,Notifications,在我维护的网站中,我想添加一个新功能,其功能类似于facebook通知。 我想自动检测数据库中的更改,然后如果插入/更新了新项目,它将生成通知 我发现: 它使用Jquery自动更新div。我试过了,修改过,效果很好:)对于即时通知,您需要WebSocket,就像PHP一样 检测数据库中的更改并不容易实现,更容易的是在更新数据库时用PHP发送消息 为此,您需要与当前访问该页面的所有人建立websocket连接。当有人更新或插入时,将向所有连接的用户发送一条消息 查看此页面以获得一个简单的教程您可以

在我维护的网站中,我想添加一个新功能,其功能类似于facebook通知。 我想自动检测数据库中的更改,然后如果插入/更新了新项目,它将生成通知

我发现:


它使用Jquery自动更新div。我试过了,修改过,效果很好:)

对于即时通知,您需要WebSocket,就像PHP一样

检测数据库中的更改并不容易实现,更容易的是在更新数据库时用PHP发送消息

为此,您需要与当前访问该页面的所有人建立websocket连接。当有人更新或插入时,将向所有连接的用户发送一条消息

查看此页面以获得一个简单的教程

您可以使用,但我会使用更简单的方法:

1-当有人执行所需的插入/更新时,在同一脚本中,在专用表中插入一行,我们称之为
通知
,对于您要发送的每个通知,它将如下所示:

 notifications(id, user_id, message, status)
2-然后每X次执行一个cron作业,读取所述表,并向用户发送一个通知,其中包含所述
user\u id
,并从表中删除该行(如果您想知道发送了什么,则将其设置为“sent”)

编辑:crontab示例,每3分钟执行一次

首先键入要编辑的
crontab-e
,然后插入以下行:

0 */3 * * * complete_path_to_the_script > /dev/null

有一种称为comet(或长轮询)的技术可以帮助您实现这一点。您不想做的是每隔x秒轮询服务器(通过AJAX)一次,查看数据是否已更改—这既浪费资源,又占用大量资源。comet所做的基本上是轮询服务器,查看是否有任何新的更改要拉,并且只有当确实有更改时,服务器才会响应。这意味着您只有在实际有新数据要提取时才点击服务器


用JavaScript很容易实现,但由于您在标题中提到了jQuery,因此有一个插件可能很有用。

您使用的是哪种DBMS?我想自动检测数据库中的更改–您打算如何实现这一点?我不知道这是否可行。我想每隔3分钟(或更短)加载一个php文件。php文件包含select语句。如果存在提取的行,那么php文件将返回提取的行。这就像一个自动刷新div的jquery,但它应该首先加载一个php文件,然后jquery将输出结果。仅供参考,大多数web主机可能无法实现这一点。我得到了逻辑,先生。你能建议我如何创建cron作业吗?它将每隔3分钟从notifs表中选择通知?很抱歉,我不在办公室,请参阅cron作业的更新答案。