我想知道如果使用PHP和MySQL将新记录插入数据库时如何触发通知。
答案 0 :(得分:5)
最简单的事情可能是每隔几秒轮询数据库并查看是否插入了新记录。由于DB中的查询缓存,这不应该大大影响数据库性能。
答案 1 :(得分:4)
MySQL现在有触发器和存储过程,但我不相信他们有任何通知外部进程的方法,所以据我所知,这是不可能的。您必须每隔一秒左右轮询数据库以查找新记录。
即使是这样,这也假设你的PHP进程是长寿的,这样它就可以随时出现以便显示记录。鉴于大多数PHP用于代码运行的网站,然后尽快退出,目前还不清楚这是否与您拥有的内容兼容。
答案 2 :(得分:3)
您可以创建一个触发器,而不是在发生更新时运行。可以使用UDF(用户定义的函数)运行/通知外部进程。没有任何内置方法可以这样做,所以这是一个加载UDF插件的情况,它会为你做。
Google为'mysql udf sys_exec'或'mysql udf ipc'。
答案 3 :(得分:2)
如果所有数据库更改都是由PHP生成的,我会为mysql_query创建一个包装器函数,如果查询类型是INSERT,REPLACE,UPDATE或DELETE,我会调用一个函数来发送相应的电子邮件。
编辑:我忘了提,但你也可以做以下事情:if (mysql_affected_rows($this->connection) > 0)
{
// mail(...)
}
答案 4 :(得分:0)
有一天我在MySQL论坛上询问是否存在像Firebird或Interbase这样的事件在MySQL中我看到有人回答是(我真的不确定)
检查一下:http://forums.mysql.com/read.php?84,3629,175177#msg-175177
答案 5 :(得分:-1)
使用存储过程和触发器可以相对容易地完成。我创建了一个“实时视图”屏幕,其中有一个滚动显示,使用事件表中的新事件进行更新。它可能有点繁琐,但一旦它快速运行。