2010-02-17 42 views
5

我使用simpleXML來瀏覽Twitter XML文件的XML結果,但是我完全失去了使用PHP緩存結果的問題。 This article似乎有一些幫助,但我碰到過memcache(和memcached,來吧,名字),我也不知道該怎麼做。PHP中的初學數據緩存

我使用這個:

$sxml = simplexml_load_file(
    'http://api.twitter.com/1/qworky/lists/qworkyteam/statuses.xml'); 

foreach($sxml->status as $status){ 
    $name = $status->user->name; 
    $image = $status->user->profile_image_url; 
    $update = $status->text; 
    $url = "http://twitter.com/" . $status->user->screen_name; 
} 

只需一個Twitter列表的XML數據存儲到可用的變量。但是,正確的做法是什麼?如果緩存文件大於10分鐘,創建一個緩存文件並僅運行這個PHP塊,否則提供緩存變量?如何在緩存文件和DOM之間來回傳遞緩存的變量?嘿,高速緩存文件有什麼樣的擴展名和文件名?

非常感謝您能以任何方式指向我這裏健康的方向。

回答

8

Joshua關注一下簡單PHP緩存的this article,你完全可以像你所描述的那樣相對容易(也許是最明智的方法)。

+0

感謝大家的支持!我結束了對這個修改:http://snipplr.com/view.php?codeview&id=13646,但你讓我走在正確的方向! –

4

作爲一般概念,caching並不意味着實施策略。普遍的想法是,您將信息存儲在某處,這比您從最初獲取數據的位置爲您提供了更高效的訪問。

因此,在這種情況下,從磁盤獲取數據要比查詢Twitter更有效(通常,網絡latency大於磁盤IO延遲)。另外,從內存獲取數據比從磁盤獲取信息更有效(因爲內存延遲小於磁盤IO延遲)。這就是說,如果你需要這些值的話,你可以將內存中的值存儲在內存中,或者存儲在磁盤上的文件中。你怎麼做取決於你(磁盤或內存,擴展,格式等)。這是你的緩存。

你必須小心的事情是緩存日益陳舊。這是您緩存中的信息與原始數據源不同步的原因。您必須爲您的應用程序確定可接受的過時數據的數量,並根據需要重新查詢,替換緩存值。

+0

非常感謝一個徹底的答案,casper。這超出了「如何」。我最終用PHP解決方案重寫了一個XML文件,如果它長於10分鐘。你認爲我應該害怕這種設置的任何特殊原因?似乎對API敏感,同時保留相對較新的數據。 –