如何让PHP反复检查我的数据库进行修改?

时间:2013-12-22 14:37:35

标签: php sql-server database repeat

我有一个程序可以更改MSSQL数据库。我希望在进行这些更改时发生一些操作,例如发送电子邮件。这个程序没有做任何这些事情,我也无法修改程序,所以我的问题说..我可以使用PHP继续检查数据库中的更改并执行这些操作吗? 我想的是:

$originalDBContent = "SELECT events FROM evTable";

while(true){
  $checkContent = "SELECT events FROM evTable";
  while($originalDBContent == $checkContent) sleep(1);

  //command below if changes made to db
  mail(...);
  }

它是否有用或任何其他程序建议完成此任务?

2 个答案:

答案 0 :(得分:0)

不,你不能在PHP上这样做,因为如果你这样做

while(true){
  $checkContent = "SELECT events FROM evTable";
  while($originalDBContent == $checkContent) sleep(1);

  //command below if changes made to db
  mail(...);
  }

这将导致浏览器或访问它的任何人超时,因为它会使页面继续加载。

使用PHP可以做的最好的事情就是做一个cron工作,但为什么每次数据库更改时都需要检查?

答案 1 :(得分:0)

使用sqlcmd的触发器应该可以轻松完成

http://technet.microsoft.com/en-us/library/ms170572.aspx

这将允许你调用php命令

另一种方式可能是(我不确定mssql中的exitinace)监视二进制日志更改日期,二进制日志显示对服务器上数据的所有修改。您可以检查文件上的修改时间并跟踪。

最后一个选项要求您拥有完全控制权。但是在插入时你可以运行脚本。假设您手动更改数据,这不会触发任何内容,因此需要通过您的应用程序进行所有更改

最佳选择是触发+ sqlcmd

更多信息和示例

http://dbalink.wordpress.com/2008/06/20/how-to-sql-server-trigger-101/