我从XML页面获取一些数据以进行一些货币计算。
像这样:$rates = file_get_contents("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
include("../lib/functions.php")
),那是否意味着每个页面加载都会重新获取数据?我可以对远程站点进行一些巧妙的缓存吗?
答案 0 :(得分:1)
它会在每个页面加载时获取该文件,是的,您应该缓存您正在获取的文件。
缓存此文件并加载它的基本方法是创建缓存版本,如果尚未加载则加载该文件。
$newCacheFile = 'eurofxref-daily.xml.cache'; //New file
if (!file_exists($cacheName)) { //Check For File
$newCacheContent= file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'); //Get This File
file_put_contents($newCacheFile, $newCacheContent); //Put the contents of external to new
}
$loadedFile = simplexml_load_file($newCacheFile); //Load the new file
您必须检查文件是否成功创建等,但这样做不应该太难:)
如果你想获得该文件的新版本,比如每24小时一次,那么就可以将这个小方法添加到if语句filemtime()
中,这样我们就可以检查文件的大小。您的代码将如下所示:
$newCacheFile = 'eurofxref-daily.xml.cache'; //New file
$checkCacheFilePeriod = 86400; //24 hours in seconds
if (!file_exists($cacheName) || filemtime($newCacheFile) > time() + $checkCacheFilePeriod ) { //Check For File and the date it was last edited.
$newCacheContent= file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'); //Get This File
file_put_contents($newCacheFile, $newCacheContent); //Put the contents of external to new
}
$loadedFile = simplexml_load_file($newCacheFile); //Load the new file
以下是我刚刚遇到的一篇文章,它可能是缓存创建文件的更好方法:http://www.catswhocode.com/blog/how-to-create-a-simple-and-efficient-php-cache。