【发布时间】:2010-10-19 02:31:12
【问题描述】:
我想知道如何使用 PHP 和 MySQL 在将新记录插入数据库时触发通知。
【问题讨论】:
我想知道如何使用 PHP 和 MySQL 在将新记录插入数据库时触发通知。
【问题讨论】:
您可以创建一个触发器,然后在更新发生时运行。可以使用 UDF(用户定义函数)运行/通知外部进程。没有任何内置方法可以执行此操作,因此只需加载一个 UDF 插件即可。
谷歌搜索“mysql udf sys_exec”或“mysql udf ipc”。
【讨论】:
这可以使用存储过程和触发器相对容易地完成。我创建了一个“实时视图”屏幕,它有一个滚动显示,它会使用我的事件表中的新事件进行更新。它可能有点繁琐,但一旦运行速度很快。
【讨论】:
有一天我在 MySQL 论坛上询问 MySQL 中是否存在 Firebird 或 Interbase 等事件,我看到有人回答是(我真的不确定)
检查这个:http://forums.mysql.com/read.php?84,3629,175177#msg-175177
【讨论】:
如果您的所有数据库更改都是由 PHP 进行的,我将为 mysql_query 创建一个包装函数,并且如果查询类型是 INSERT、REPLACE、UPDATE 或 DELETE,我将调用一个函数来发送相应的电子邮件。
编辑:我忘了提及,但您也可以执行以下操作:
if (mysql_affected_rows($this->connection) > 0)
{
// mail(...)
}
【讨论】:
MySQL 现在确实有触发器和存储过程,但我不相信它们有任何方式通知外部进程,据我所知这是不可能的。您必须每秒钟左右轮询一次数据库以查找新记录。
即使是这样,这也假设您的 PHP 进程是长期存在的,这样它就可以承受等待记录出现的代价。鉴于大多数 PHP 用于代码运行然后尽快退出的网站,因此不清楚这是否与您所拥有的兼容。
【讨论】:
最简单的事情可能是每隔几秒钟轮询一次数据库,看看是否插入了新记录。由于数据库中的查询缓存,这不会显着影响数据库性能。
【讨论】: