2012-03-29 28 views
1

我想從雅虎SQL API檢索RSS提要,並通過PHP將其存儲在文件中。這裏是代碼:更新數據庫而不創建重複

if(filemtime($cache) < (time() - 10800)) { 

    if (!file_exists(dirname(__FILE__) . '/cache')) { 
     mkdir(dirname(__FILE__) . '/cache', 0777); 
    } 

    $path = "http://query.yahooapis.com/v1/public/yql?q="; 
    $path .= urlencode("SELECT * FROM feed WHERE url='http://url'"); 
    $path .= "&format=json"; 

    $feed = file_get_contents($path, true); 

    if (is_object($feed) && $feed->query->count) { 
     $cachefile = fopen($cache, 'wb'); 
     fwrite($cachefile, $feed); 
     fclose($cachefile); 
    } 
} 
else { 
    $feed = file_get_contents($cache); 
} 

問題是。現在我想將結果存儲在數據庫中。但是因爲我將它存儲在文件中並在3小時內更新它,我確信我將運行以複製RSS條目。我不想將這些副本存儲在數據庫中。

是否有一些有效的方法來完成這項工作?

+0

這與JavaScript有關嗎? – rekire 2012-03-29 19:00:50

+0

我不認爲file_get_contents會返回一個對象... – ajreal 2012-03-29 19:04:04

回答

3

或者你在url上添加一個唯一的索引,這樣如果url已經存在,插入將不會被添加。

你可以通過使用INSERT INGORE INTO ingore錯誤mysql給你...

+0

是的,插入IGNORE INTO tbl_name ...是你的朋友http://dev.mysql.com/doc/refman /5.5/en/insert.html – Sergi 2012-03-29 19:04:06

+0

+1這個想法 – Stefan 2012-03-29 19:19:47

1

檢查RSS條目是否存在,如果存在 - 不要插入,否則插入新的rss條目。

+0

會涉及大量搜索所有條目的開銷。我的意思是一旦條目數量增加,它不會是一個很好的技術。 – amit 2012-03-29 19:01:48

+1

在文件/數據庫中添加一個時間戳並過濾現在和NOW()之間的時間() - 3小時 – 2012-03-29 19:03:07

相關問題