2011-10-05 36 views
0

使用xslt和多個源創建一個包含100個帖子的XML文件。在此之後,我回覆按日期排序的標題(最新的是第一個)。我只在頁面中顯示100個標題。當一個資源發佈一個新帖子時,它首先在我的名單上,最後一個(100個離開列表)。我展示的每個帖子都有一個類,如p+number,例如第一個是p1,第二個是p2。計算更新的XML文件中的新條目?

這是news.php

$feeds=array('big-file.xml'); 
$entries = array(); 
$xml = simplexml_load_file($feed); 
$entries = array_merge($entries, $xml->xpath('//item')); 

foreach ($entries as $post) { 
if(++$i > 100) break; 
echo $post->title; 
} 

我設置更新big-file.xml每2分鐘一個cron作業的主要部分。另外,在index.php我有一個jQuery腳本,加載每3分鐘news.php顯示我的訪客更新的新聞。

注意事項保存在數據庫或某處。顯示的帖子只有100個。

我的問題是如果有一種方法可以知道在更新news.php時我的列表中出現了多少新帖子?

回答

0

當你得到整個列表時,你可以設置一個時間戳。然後在該時間戳之後詢問新元素。在服務器端,您最近將xml中的消息更新爲較舊,直到消息日期在時間戳之前。你應該在客戶端更新你的時間戳。 LOOP

+1

這是如何告訴我有多少新帖? – EnexoOnoma

+0

這裏如果(++ $ i> 100)break;您可以添加條件$ post-> date> $ timestamp其中$ timestamp是一個參數。讓我們說$ _GET ['timestamp']。然後你不會把它們全部展現出來。在jQuery方面,您將時間戳更新爲當前時間,並在下一次調用中將其傳遞給news.php等。此外,我會建議閱讀該XML文件使用SAX像解析器,以避免加載到內存中 – jorgeu

+0

請參閱PHP薩克斯分析器http://www.codemiles.com/php-tutorials/php-sax-parser-in-行動t1436.html – jorgeu

-1

你可以讓這個php文件在一個文本文件中寫一行,所以每一個$文件都寫在一行中,並通過fread函數讓腳本讀取有多少行,每3分鐘擦除一次此文本文件中的所有內容。希望我幫助:)