我有一个程序可以更改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(...);
}
它是否有用或任何其他程序建议完成此任务?
答案 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/