在这里,我没有得到在php中48小时后才完全更新数据库的技巧。我使用modulo使用这个技巧,但这并不能提供准确的输出。在下面的代码中,页面刷新,在最后48小时每45秒执行一次。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META HTTP-EQUIV="REFRESH" CONTENT="45">
</head>
<body>
<?php
$date1 = date('Y-m-d h:i:s');
$date2 = "2012-02-29 12:59:00";
$diff = abs(strtotime($date2) - strtotime($date1));
$hours = $diff/(60*60);
echo $hours . "<h1> NeVeR CloSe ThIs PaGe ......</h1>";
if($hours%48 == 0)
{
$sql = "UPDATE [db].[dbo].[table] set status = 0";
$res = odbc_exec($con,$sql) or die(odbc_error());
}
?>
</body>
</html>
如何从日期开始每48小时执行一次更新查询:2012-02-29 12:59:00
答案 0 :(得分:0)
为了避免在48小时内多次执行UPDATE,我建议您在发送UPDATE查询之前将当前时间与上次执行的时间进行比较。但要比较一下,你必须保存最后一次执行的日期时间戳。我会将它保存到数据库的新表中。
对于每48小时的更新,我建议使用一个cron作业。您可以在服务器上配置它,也可以在cronjob站点上注册。有很多网站可以免费注册cron作业p.ex. http://www.onlinecronjobs.com/ 但我建议在自己的服务器上注册。
答案 1 :(得分:0)
由于SQL Server Express没有附带SQL Agent,因此您可以使用Windows调度程序运行带有存储过程或SQL脚本的SQLCMD。 MSDN Link