2013-04-24 62 views
3

我创建了一个函数,它使用json获取twitter数量。PHP - 在一小时后检查json值

但是,我想在一段时间后重新检查它,比如一个小时。但是目前每次页面加载时都会检查它。哪些影响页面加载时间。

已经有一个PHP函数,它做的正是我想要的,但我不记得了,我只记得从tr....

这里的功能开始是我的功能,检查Twitter的追随者:

function follower($tw) {  
    $tw = @json_decode(file_get_contents('http://api.twitter.com/1/users/show.json?screen_name='.$tw)); 
    $tw_followers = number_format($tw->followers_count); 

    return $tw_followers; 
} 

编辑:

我发现PHP函数:

set_transient('follower', $tw_followers, 60*60*24); 

请指导我,如果我错了

+3

为什么不使用'Cron Job'或'Scheduled Task'? – Baba 2013-04-24 11:29:31

+0

这是一件简单的事情,我不想用玉米,玉米会让事情变得复杂。并不想使用数据库 – user007 2013-04-24 11:32:39

回答

2

我会建议你,如果你使用的是Unix服务器或Windows任务计划程序在Windows的情况下利用cron jobs

像这样,你将能够使用编程任务。

对于这里的窗户是由@克里斯·库尼apported教程:http://www.makeuseof.com/tag/how-to-automate-windows-programs-on-a-schedule/

在使用cron的的情况下,你可以做到这一点很容易像这样来检查它每隔一小时:

0 * * * * php -f your_relative_or_full_path_URL/params > /dev/null 

为了避免任何人通过URL执行代码,你可以像this这样的东西。

+0

你是对的,但我不想使用玉米或日程安排,因为目前我没有使用数据库。如果我使用任务计划,那么我需要将数据保存在数据库中 – user007 2013-04-24 11:36:21

+0

否.Cron根本与数据库无关。您不需要数据库来执行计划任务。 – Alvaro 2013-04-24 11:37:43

+0

好吧,我会检查它。这是一个很好的解决方案。 – user007 2013-04-24 11:39:05

0

使用AJAX得到它并在频繁的时间间隔内重新载入正确的值。

0

使用time()检查时间将允许它每小时运行一次,如果页面已加载。您还需要将值存储在上次运行时的数据库中。下面是一些伪代码与PHP混合使用

connect_to_database(); 
$lastcheck = get_value_from_database('last-check'); 
if($lastcheck+3600 < time()) { 
    run_json_stuff(); 
    update_last_check_in_database(); 
} 

$ lastcheck + 3600 =自上次运行以来的1小时。如果它小于加载页面的时间(),它已经运行了一个多小时,因此它应该再次运行。

1

您可以使用mem缓存或其他缓存技术来排列所有JSON键/值并运行后台线程以每小时获取这些值。

+0

更多详情请 – user007 2013-04-24 11:39:29

+0

我在想你是因为某种原因使用C#来运行这个工作的。如果您使用的是PHP和HTML5,则可以使用本地存储并将用户对象保存一小时,然后再销毁它。因此,每次页面加载时,它都会查找本地存储,而不是向twitter rest api发出请求。 – Harish 2013-04-24 11:50:16

+0

localStorage ['jsoncache'] = JSON.stringify(myJSONObject); 检索对象。 myJSONObject = JSON.parse(localStorage ['jsoncache']); – Harish 2013-04-24 11:50:53