English 中文(简体)
PHP文件集内容($url)性能缓慢
原标题:
  • 时间:2009-04-09 17:07:00
  •  标签:

我的网页使用谷歌图表生成了五张图表。如果图形还没有缓存,那么我有下面的代码行来检索图像。

$image=文件设置内容(“http://chart.apis.google.com/chart?“.$query);

当代码在循环中执行时,需要10秒才能得到每个图像。但是,如果我将代码更改为使用谷歌的一个ip地址而不是url:

$image=文件设置内容(“http://74.125.93.100/chart?“.$query);

检索图像只需不到一秒钟的时间。所以我最初的想法是DNS没有解析URL,延迟是因为在指定的DNS服务器中循环?所以我试着从服务器上ping chart.apis.google.com,它立即返回了合理的响应。

所以我的问题是:是否有任何我可能忽略的PHP(或Apache2)配置设置可能会导致延迟,或者这听起来像是服务器配置问题?

问题回答

您的DNS解析速度较慢(您的服务器正在使用的DNS可能有问题,然后大多数其他域可能较慢)或您的服务器在使用DNS缓存时出现问题。

无论如何,如果你没有特定的理由来处理从谷歌图表中收到的图像,为什么不把它打印成img标签呢?如果你愿意,你可以用css覆盖文本或透明png-s。

Got the same problem here. It might be a DNS issue... maybe the apache server which use DNS servers that are too slow.

我尝试过不同的方法:CURL、WGET(shell exec)。。。仍然存在同样的性能问题。

在我的生产服务器上大约需要15秒。但在我的本地服务器(使用IP)上使用脚本的时间不到1.5秒。

尝试/etc/resolv.conf或/etc/named.conf?大概我正在努力寻找解决方案。

这是一个与托管提供商在/etc/resolv.conf中放置的IP有关的问题。您无法修复它。这是托管提供商的问题。

但您可以使用谷歌公共dns:8.8.8.8。打开/etc/resolv.conf,然后删除所有数据并写入:

nameserver 8.8.8.8

然后保存。重新启动dns和apache。然后再试一次。

为什么不在开始加载图像之前解析ip?

$ip = gethostbyname($name);
$image = file_get_contents($ip."/chart?".$query);




相关问题
热门标签