2009-04-13 125 views

回答

4

MySQL现在有触发器和存储过程,但我不相信他们有任何方式通知外部进程,所以据我所知这是不可能的。你必须每隔一秒钟轮询一下数据库才能查找新记录。

即使是这样,它也会假定你的PHP进程是长期存在的,这样它就可以挂起来记录出现。鉴于大多数PHP用于代码运行的网站,然后尽快退出,因此不清楚这与您的产品是否兼容。

+0

显然这是可能的,但有一些插件: http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html#qandaitem-22-5-1-10 – 2009-04-14 22:51:23

5

最简单的事情可能是每隔几秒轮询一次数据库,看看是否插入了新记录。由于数据库中的查询缓存,这不会影响数据库的性能。

2

如果所有的数据库更改都是由PHP创建的,我会为mysql_query创建一个包装函数,如果查询类型是INSERT,REPLACE,UPDATE或DELETE,我会调用一个函数发送相应的电子邮件。

编辑:我忘了提,但你也可以做类似如下:

if (mysql_affected_rows($this->connection) > 0) 
{ 
    // mail(...) 
} 
-1

这可以相对容易地使用存储过程和触发器来实现。我创建了一个“实时查看”屏幕,其中有一个滚动显示屏,该显示屏通过我的事件表中的新事件进行更新。它可能有点烦琐,但一旦运行得很快。

2

您可以创建一个触发器,而不是在发生更新时运行。可以使用UDF(用户定义函数)运行/通知外部进程。没有任何内建的方法可以这样做,所以这是一个加载UDF插件的例子,它会为您做。

Google for'mysql udf sys_exec'或'mysql udf ipc'。