【问题标题】:Live update notification on database changes MYSQL PHP关于数据库更改的实时更新通知 MYSQL PHP
【发布时间】:2010-10-19 02:31:12
【问题描述】:

我想知道如何使用 PHP 和 MySQL 在将新记录插入数据库时​​触发通知。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您可以创建一个触发器,然后在更新发生时运行。可以使用 UDF(用户定义函数)运行/通知外部进程。没有任何内置方法可以执行此操作,因此只需加载一个 UDF 插件即可。

    谷歌搜索“mysql udf sys_exec”或“mysql udf ipc”。

    【讨论】:

      【解决方案2】:

      这可以使用存储过程和触发器相对容易地完成。我创建了一个“实时视图”屏幕,它有一个滚动显示,它会使用我的事件表中的新事件进行更新。它可能有点繁琐,但一旦运行速度很快。

      【讨论】:

        【解决方案3】:

        有一天我在 MySQL 论坛上询问 MySQL 中是否存在 Firebird 或 Interbase 等事件,我看到有人回答是(我真的不确定)

        检查这个:http://forums.mysql.com/read.php?84,3629,175177#msg-175177

        【讨论】:

          【解决方案4】:

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

          编辑:我忘了提及,但您也可以执行以下操作:

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

          【讨论】:

            【解决方案5】:

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

            即使是这样,这也假设您的 PHP 进程是长期存在的,这样它就可以承受等待记录出现的代价。鉴于大多数 PHP 用于代码运行然后尽快退出的网站,因此不清楚这是否与您所拥有的兼容。

            【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 2015-02-28
              • 1970-01-01
              • 1970-01-01
              • 2014-01-15
              • 2016-09-01
              • 1970-01-01
              • 2017-10-24
              • 1970-01-01
              • 2021-05-03
              相关资源
              最近更新 更多