2013-04-24 46 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