2014-09-19 74 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