2014-09-19 160 views
0

在过去几天中,我一直在搜索很多关于在数据库中列出fb喜欢的内容。我也从here得到了帮助。现在我知道如何从fb获取喜欢的数据,读取结果并在数据库中进行更新。根据最近更新时间从表中更新数据db

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

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

请教如果这个逻辑是正确的,并帮助我的语法。

下面编辑后,被搁置

我有一个代码(在update.php)读取从FB页面“喜欢”和场下fblikes把它放在我的数据库FBDB表fbtable。这是行得通的。我有另一个代码(在index.php中)从fbtable读取数据,并在前端显示fblikes字段值。最终用户总是会看到旧的喜欢...即fbtable中可用的数据。只有当我运行update.php文件时,更新后的喜欢才会显示给用户。我没有合并这两个文件,因为如果我有超过100个页面,页面加载非常慢,这就是为什么我需要一个函数来检查'update'表中最后一次更新的日期时间,以及当前时间和上次更新之间的差异时间超过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> 

谢谢

+0

编辑了我的问题了解更多信息 – 2014-09-20 10:30:30

回答

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

+0

非常感谢:) – 2014-10-30 19:59:25