根据表中的上次更新时间更新db中的数据

时间:2014-09-19 21:41:43

标签: php mysql sql

过去几天我一直在搜索fb喜欢的数据库。我也得到here的帮助。现在我知道如何从fb获取喜欢的数据,读取结果并在数据库中更新它。

当我在一个循环中喜欢100多个fb页面并且如果我的最终用户更多时,它会给数据库带来负担并且代码运行得非常低。所以我做了两个链接。第一个链接(update.php)更新数据库中的数据,第二个链接(index.php)显示快速运行的用户数字。现在我想每隔一小时添加一次自动更新功能。

我知道逻辑,但不知道如何在语法中转换它。我想过做一个更新'只有一个字段的数据时间类型的表。当最终用户访问该链接时,它将首先从“更新”中读取日期时间值。表。如果表中当前时间和上次更新时间之间的差异超过一小时,则运行一个函数(我已写过一个),否则运行代码的剩余部分而不运行该函数。

如果这个逻辑是正确的,请建议并帮助我解释语法。

暂停后编辑

我有一个代码(在update.php中),它可以读取'喜欢'从fb页面并将其放在fblikes字段下的表fbtable中的数据库fbdb中。这很有效。我有另一个代码(在index.php中)从fbtable读取数据并显示前端的fblikes字段值。最终用户将始终看到旧的Likes ......即fbtable中可用的数据。只有在我运行update.php文件时,才会向用户显示更新后的喜欢。我没有合并这两个文件,因为如果我有100多个页面,页面加载非常慢,这就是为什么我想要一个函数来检查更新'表,如果当前时间和上次更新时间的差异超过1小时,则应运行update.php以确保数据每1小时更新一次。

<?php
include "conn.php";
?>

<html>
<head>
.
.
</head>

<body>
read datetime from 'update' table
if current time - last updated time > 1 hour
run the function
else
do below task
.
.
show data from database to end user
.
.
</body>

</html>

谢谢

1 个答案:

答案 0 :(得分:1)

首先,您可以查看使用您的操作系统安排更新任务每小时运行一次,但是如果您想要遵循您建议的方法......

假设一个last_update表(简化)

create table last_update ( updated_at datetime);

然后您可以发送查询以查找过去一小时内的更新

select max(updated_at) last_updated
from last_update 
where updated_at > now() - interval 1 hour

如果更新发生在最后一小时,则返回上次更新时间,如果不是

,则返回没有行

select count(*) up_to_date 
from last_update 
where updated_at > now() - interval 1 hour

这将返回过去一小时内发生的更新次数,如果不是

,则返回没有行的更新次数

您可以测试查询结果以决定是否运行更新功能

http://sqlfiddle.com/#!2/7cf706/2