1

我正在尝试制作一个可以加载当前天气预报的 php 脚本,它使用一些 XML 预处理来消化输入,但是它经常被访问并重新加载。问题始于我当前的主机,是的,我明白为什么,这限制了脚本占用的处理能力。

目前需要一个完整的过程来执行,每次执行大约需要 3 秒。我被限制为 12,但我得到了很多 ping。

我对你们的问题是:如果有的话,我可以使用什么方法来缓存脚本的输出,这样它就不必预处理它在 5 分钟前已经做过的事情。由于是天气,我最多可以有2个小时的时差。

我对php也很熟悉,所以不用担心xD。

~非常感谢你,强尼:D

4

4 回答 4

2

您可以运行一个 cronjob 来生成天气预报数据,然后从缓存中显示整个内容。您可以使用 APC,因此它始终加载到内存中(加上所有其他附加优势)。

于 2009-09-30T23:30:53.567 回答
1

Zend 框架为Zend_Cache对象提供了多个后端(文件、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));
}
于 2009-09-30T23:36:06.803 回答
0

需要一个代码片段来查看您正在执行哪种处理。考虑使用 xdebug 来更好地优化您的代码。您也可以使用 AB 等基准测试工具来查看您的服务器可以处理多少个进程。

有几种不同的缓存机制可用,但如果没有看到你在做什么,很难说......

于 2009-09-30T23:30:42.163 回答
0

3 秒是一个非常长的执行时间,正如已经问过的,有些冷会很高兴看到你如何处理“输入”以及输入的格式是什么。

在这里可以找到一篇关于将脚本缓存到文件的快速而肮脏的文章:

http://codestips.com/?p=153

于 2009-09-30T23:34:56.087 回答