Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让PHP反复检查数据库的修改?_Php_Sql Server_Database_Repeat - Fatal编程技术网

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

如何让PHP反复检查数据库的修改?,php,sql-server,database,repeat,Php,Sql Server,Database,Repeat,我有一个对MSSQL数据库进行更改的程序。我希望在进行这些更改时执行一些操作,例如发送电子邮件。这个程序不做这些事情,我也不能修改程序,所以我的问题是。。我可以使用PHP不断检查数据库中的更改并执行这些操作吗? 我的想法是: $originalDBContent = "SELECT events FROM evTable"; while(true){ $checkContent = "SELECT events FROM evTable"; while($originalDBConte

我有一个对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(...);
  }

它会工作吗?或者任何其他建议的程序来完成这项工作吗?

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

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

  //command below if changes made to db
  mail(...);
  }
这将导致浏览器或任何访问它的人超时,因为这将使页面继续加载


使用PHP可以做的最好的事情是执行cron任务,但为什么每次数据库更改时都需要检查?

将触发器与sqlcmd结合使用应该很容易做到

这将允许您调用php命令

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

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

最好的选择是trigger+sqlcmd

更多信息和示例


如果是Linux,请使用。如果是Windows,请使用。您可以在数据库中使用触发器吗?如果可以的话,把所有的变化都写到表中,我对触发器一无所知。。我可能可以添加新的表,但我不确定是否还有其他东西会使我提到的程序不稳定。我将尝试任务调度程序。使用Windows正如我所说,希望在事件表发生更改时发送电子邮件。触发器+sqlcmd,transact似乎是一种方式。但我不知道如何启动扳机,我也有时间压力。你能提供更多的信息来启动触发器或脚本吗?一个问题。我是否需要付费SQL代理或Management Studio(付费版本,非express)?