2009-09-30 38 views
1

我试图做一个php脚本,可以加载当前的天气预报,它使用了一些XML预处理来消化输入,但它经常访问并重新加载。问题始于当前的主机,我确实明白为什么,这限制了脚本占用的处理能力。我会如何减少php脚本的处理器占用空间?

当前需要执行一整个过程,每次执行大约需要3秒。我仅限于12岁,但我获得了相当多的奖励。

我给你们的问题是:我可以使用什么方法来缓存脚本的输出,以便它不必预处理5分钟前已经做过的事情。既然是天气,我可以有两个小时的时差。

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

〜非常感谢你, 强尼:d

回答

2

您可以运行一个cronjob,将产生气象预测数据,然后就显示整个事情从缓存。您可以使用APC,以便始终将其加载到内存中(以及所有其他优势)。

+0

啊,将可能的工作,谢谢:d – JonnyLitt 2009-09-30 23:32:35

+1

否则,只有PHP的替代办法是使用'filemtime()'返回一个缓存文件或后再生一段时间。 – 2009-09-30 23:34:40

0

需要一段代码,看到你在做什么样的处理。考虑使用xdebug来更好地优化你的代码。 此外,您可以使用AB等基准测试工具来查看您的服务器可以处理多少个进程。

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

0

3秒钟的时间极长的执行时间,因为已经问,有些感冒会很高兴地看到你如何处理“输入”和说了什么格式的输入是英寸

约一个快速和肮脏的文章缓存了脚本文件是在这里找到:

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

1

Zend Framework提供与多个后端(文件,memcached的,APD)的Zend_Cache对象。或者你可以滚你自己的东西,如:

$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)); 
} 
+0

是的,我可能会做某些事情,我将使用文本/纯文本将输出存储为缓存类型对象,然后在每次执行时间结束时对其进行更新。 – JonnyLitt 2009-09-30 23:41:11

+0

或者你可以将整个事情序列化到文件中,我编辑了匹配的答案。 – Neel 2009-09-30 23:51:33

相关问题