2011-07-15 30 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