【问题标题】:How to update SQL data only if 1 hour is passed仅在经过 1 小时后如何更新 SQL 数据
【发布时间】:2019-02-15 13:18:09
【问题描述】:

我正在使用优惠券代码网站,它有一个产品部分。每次访问者加载页面时,我都不想从购物网站的 API 服务器中提取数据,而是将数据存储在 SQL 中并使用它。 但是数据应该每小时更新一次,或者仅在经过一个小时后更新。 cron 作业不是必需的,因为我不想自动执行它。 如果一个小时内有100个网页用户,他们会得到相同的数据,但是当第一个用户在1小时后到达时,它应该覆盖SQL中的产品信息。

我从 w3schools.com 获得了以下代码,它可以很好地保存 SQL 中的数据。 我希望有些人可以帮助我覆盖超过 1 小时的数据。否则它应该充当“数据已经存在”。

<?php
$servername = "localhost";
$username = "nuser";
$password = "pass";
$dbname = "db";

$ProductId = "smartphone";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$check=mysqli_query($conn,"select * from testdb where productid='$ProductId'");
$checkrows=mysqli_num_rows($check);

   if($checkrows>0) {
      echo "Data Already Exists";
   } else {  
    //insert results from the form input


$sql = "INSERT INTO Flipkart (productid, title, price)
VALUES ('productid','title','price')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();}
?>

以上代码将数据保存在数据库中,它也可以检测重复数据。但我想再添加一个功能,如果当前数据时间超过 1 小时,它将覆盖数据。数据库有一个 TIMESTAMP "reg_date" 列,它以 YYYY-MM-DD HH:MM:SS 格式存储创建的日期和时间。

我是 SQL 和 php 的新手,如果问题有任何问题请见谅...

【问题讨论】:

  • 使用 cron 作业,该作业必须每隔一小时运行一次
  • 您需要将上次更新数据的时间戳存储在某处,然后您只需检查从那时到现在是否已经过去了一个多小时。如果没有,则从数据库中获取缓存数据,否则调用 API 以获取当前数据,并将其写入数据库。

标签: php mysql sql


【解决方案1】:

您可以使用 cron 作业。

这是迄今为止我为 cron 作业找到的 PHP 代码的最佳解释: https://code.tutsplus.com/tutorials/managing-cron-jobs-with-php--net-19428

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多