我正在尝试创建一个可以加载当前天气预报的PHP脚本,它使用一些XML预处理来消化输入,但是经常访问并重新加载。问题始于我当前的主机,是的,我明白为什么,限制了脚本占用的处理能力。
目前需要执行整个过程,每次执行大约需要3秒。我只限于12岁,但是我得到了很多次。
我向你们提出的问题是:我可以使用哪些方法来缓存脚本的输出,这样就不必预先处理5分钟前已经完成的事情了。由于天气原因,我的时间差可达2小时。
我也非常熟悉php,所以不要担心xD。
〜非常感谢, 强尼:D
答案 0 :(得分:2)
你可以运行一个生成天气预报数据的cronjob,然后只显示缓存中的全部内容。您可以使用APC,因此它总是加载到内存中(加上所有其他附加的优点)。
答案 1 :(得分:1)
Zend Framework为Zend_Cache对象提供了多个后端(File,memcached,APD)。或者您可以使用以下内容滚动自己:
$cachFile = "/path/to/cache/file";
$ttl = 60; // 60 second time to live
if (!file_exists($cacheFile) || time()-filemtime($cacheFile) > $ttl) {
$data = getWeatherData(); // Go off and get the data
file_put_contents(serialize($cacheFile), $data);
} else {
$data = unserialize(file_get_contents($cacheFile));
}
答案 2 :(得分:0)
需要一个代码段来查看您正在执行的处理类型。考虑使用xdebug来更好地优化代码。 您也可以使用AB等基准测试工具来查看服务器可以处理的进程数。
有几种不同的缓存机制可用但是没有看到你正在做什么样的过程很难说......
答案 3 :(得分:0)
3秒是一个非常长的执行时间,正如已经提到的那样,看到你如何处理'输入'以及输入所处的格式会有些冷。
这里有一篇关于缓存脚本到文件的快速而肮脏的文章: