gpt4 book ai didi

PHP:缓存 RSS 数据以避免每次加载页面时都请求它

转载 作者:可可西里 更新时间:2023-11-01 17:04:10 25 4
gpt4 key购买 nike

我正在解析来自这个 RSS 提要的数据:http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=SAM|AR|AR005|MONTE%20MAIZ , 那里的数据每小时更新一次。

为了解析它,我在我的类初始化时加载 RSS,并将其转换为可用对象。

这样做的问题是每次加载页面时,都会重新解析RSS,HTTP请求会延迟页面加载。

我在想一个 cronjob 每小时解析一次 RSS,然后将数据保存在 JSON 结构中。但我真的不想依赖 cron,因为并非所有共享托管服务器都提供它(尽管它们应该提供)。

关于如何执行此操作还有其他建议吗?

最佳答案

您可以使用 Zend_Cache .服务器将第一次加载提要,但以后的调用将使用缓存。

实际上,我已经实现了您所详述的内容:

private function _loadFeedEntries($url)
{
$cache = $this->_getCacheObj();
$md5 = md5($url);
if ($result = $cache->load("feed_{$md5}")) {
return $result;
}
$entries = array();
try {
$feed = @Zend_Feed::import($url);
foreach ($feed as $entry) {
$entries[] = $entry;
}
} catch (Exception $e) {
// ignore this feed.
}

$cache->save($entries, "feed_{$md5}");

return $entries;
}

private function _getCacheObj()
{
$frontendOptions = array(
'lifetime' => self::CACHE_LIFETIME,
'automatic_serialization' => true
);

$backendOptions = array(
'cache_dir' => self::CACHE_DIR
);

return Zend_Cache::factory(
'Core',
'File',
$frontendOptions,
$backendOptions
);
}

您仍然可以让 cronjob 调用 _loadFeedEntries(),这将缓存结果。您甚至可以在您的系统中创建 cronjob,每隔 CACHE_LIFETIME 秒导航一次您的站点,从而“保持”缓存更新。

关于PHP:缓存 RSS 数据以避免每次加载页面时都请求它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2426299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com