【发布时间】: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 以获取当前数据,并将其写入数据库。