2011-07-15 26 views
0

我使用CURL从远程服务器获取一些信息,远程服务器平均需要15到20秒才能生成响应,然后它的大小约为5MB 10MB。当源处理时间很长时,CURL性能问题

问题是CURL需要永久检索响应。

有什么办法可以提高CURL的性能吗?

现在我发现的解决方案是让服务器向静态生成的文件返回一个新的URL,然后下载该文件。我希望能够在一个请求中做到这一点。

回答

2

您有几种选择:

  1. 通过cron作业下载通过卷曲文件并存储在本地。这样无论多久都不重要。
  2. 如果服务器可以向静态生成的内容返回一个新的URL,请使用它。可能通过Location:标头,它会告诉你的脚本从哪里获取它。
  3. 加快远程服务器莫名其妙
+0

1 - 无法通过CRON完成,因为结果必须立即显示在屏幕上(以30秒或更短的时间为准) 2 - 可能使用标题位置是最好的选择,我会尝试一下 3 - 正如我在另一个评论,远程服务器的速度是好的,它正在查询一个web服务,并且这个响应需要那段时间。 – Pablius

+0

用于命题nb 2的+1 –

+0

@Pablius:您的意思是说信息必须始终保持最新,或者网页必须在30秒内显示?如果是后者,无论多久或经常更新cron作业都无关紧要,本地保存意味着网页可以立即读取(几乎)。 –

0

什么?你说服务器需要15-20秒才能产生响应,而Curl需要很多时间?

我不想打扰你,但如果你让服务器更快地回复,Curl会更快地检索响应。

+0

这是通过查询一个Web服务所产生的响应,这就是为什么需要那么长时间,我不能做任何事情:) – Pablius

+0

是的,但是这就是为什么卷曲需要很长一段时间......如果有什么事情先用假快速请求ping服务器,让它开始产生/缓存响应,然后在15分钟内做出卷曲请求。 –

+0

我将尝试@Ryan使用标题位置重新请求页面的建议。我无法长时间缓存结果(它们只有5分钟或更短时间才有效),即使可以,我也必须在请求发出后立即将它们显示在屏幕上(最多可接受30秒)。 BTW请求总是不同的,所以它是不可预知的,用户会先要求做什么 – Pablius