2010-05-24 139 views
1

服務器端是PHP + zend框架。php緩存zend框架

問題:

我有巨大的數據appox 5000條記錄,並在input.txt的文件沒有列的有5個。 我喜歡只將所有數據讀入內存一次,並向每個瀏覽器請求發送一些數據。 但如果我更新該input.txt文件,則更新的數據必須自動同步到該 內存位置。

所以我需要通過使用內存緩存技術來解決這個問題。但緩存技術 已過期time.but如果input.txt在緩存過期之前更新,那麼我需要自動同步到該內存位置。

現在我使用zend框架1.10.is它可能在zend框架。 可以有人給我一些zendfrmawork的代碼行

我沒有選擇使用memchached服務器(分佈式)。

只有zend framwork。

+0

做/你可以使用APC/eAccelerator PHP擴展如果不讀取每個請求file_get_contents整個input.txt將工作得很好 – bas 2010-11-12 20:05:47

回答

1

使用懶加載像這樣(1H緩存通常是OK)。

function getData() { 
    $cache = ...; //get your memory cache here 
    $cacheId = 'MyCacheId'; //cache id for your data 
    $loadTimeCacheId = 'dataLoadCacheId'; //cache id for data load timestamp 
    $cacheLength = 3600; //seconds 

    $data = $cache->load($cacheId); 
    $loadTime = (int) $cache->load($loadTimeCacheId); 

    if (!$data || filemtime('/path/to/your/file') > $loadTime) { 
     $data = ...; //real loading here 

     $cache->save($data, $cacheId, array(/*no tags*/), $cacheLength); //save data to cache 
     $cache->save(time(), $loadTimeCacheId, array(/*no tags*/), $cacheLength); //save load timestamp 
    } 

    return $data; 
} 
0

最佳選擇是使用Zend_Cache_Frontend_File指出,您的文件和Zend_Cache_Backend_Memcached。除了Memcache或APC之外,幾乎沒有其他選擇如何在內存中存儲任何內容。沒有外部擴展IMO就無法完成。