使用PHP监控MySQL数据库

时间:2011-01-16 10:40:24

标签: php mysql

我有一个包含12,000个条目的mysql数据库,我想要设置的是能够监视数据库中的列,如果/当列被更改为任何条目时,它会向我发送一封包含详细信息的电子邮件。

编辑:我可以访问mysql db,但不能访问与它一起使用的脚本。所以它应该监视它的变化......

6 个答案:

答案 0 :(得分:4)

如果您的MySQL版本有这些触发器,您可以在表上创建一些触发器。然后触发器可以调用您要创建的任何函数。触发器的优点是任何插入或删除或更新列都会导致它触发;您不必更改任何其他代码来实现它。请点击此处了解更多信息...... http://dev.mysql.com/doc/refman/5.0/en/triggers.html

答案 1 :(得分:2)

  • 在更新时创建触发器
  • 创建另一个表(让我们称之为cron_table),其中触发器将插入更新行的信息(可能是旧值,新值等)
  • 设置一个cron,它将调用一个脚本,该脚本将检查cron_table并在找到任何条目时发送电子邮件。可以根据需要设置Cron间隔。

---如果您可以从触发器发送电子邮件,则不需要单独的表和cron ---

答案 2 :(得分:0)

尝试与this类似的内容,如果查询中包含insert和TABLE_NAME或COLUMN_NAME

,您可以编辑该功能以向您发送电子邮件并发送电子邮件

答案 3 :(得分:0)

将一列设置为日期时间戳。

这将在行的每次更改时更新。在那里你可以通过cron作业运行一个sql查询,或者在每几次php查询之后运行sql查询,以返回自上次检查后更改的行列表。

Select   * from tbl_myentries where EntryUpdated > '$TimeSinceLastCheck'

答案 4 :(得分:0)

您需要了解数据操作语言(DML)触发器 在我的SQL中:使用

CREATE TRIGGER salary_trigger
    BEFORE UPDATE ON table_name
    REFERENCING NEW ROW AS n, OLD ROW AS o
    FOR EACH ROW
    IF n.columnName <> o.columnname THEN

    END IF;
;

答案 5 :(得分:0)

为列上的更改创建触发器,然后将其作为日志表插入另一个表。

在您的桌面上运行cron job,它会向您发送电子邮件。