2011-02-08 149 views
1

我有一個應用程序使用cURL來獲取多個網站的內容。我想以某種方式優化它。是否有可能實現一個單一的設計模式,並以某種方式反饋curl我需要的內容的URL - 以便我只實例化一次?PHP:更快的cURL執行

現在,我設置並銷燬每個呼叫的連接。示例代碼將受到高度讚賞。

謝謝。

+0

我建議你使用一些框架來加載cURL模塊作爲組件。我使用yii框架http://www.yiiframework.com/。我使用yii社區提供的cURL擴展。 http://www.yiiframework.com/extension/curl – brainless 2011-02-08 20:23:13

+0

@brainless - 我已經在使用CodeIgniter。我會研究它,看看我是否可以實施像你所建議的。 – StackOverflowNewbie 2011-02-08 21:03:02

回答

1

這聽起來像是對我不必要的微觀優化。您將爲必須通過互聯網的流程節省一微秒的時間,以便從已經無法控制的資源中獲取大量數據。如果您只是想讓流程運行得更快,也許嘗試並行​​運行多個下載。

編輯:和/或確保你的curl支持壓縮的內容。

+0

我已經處理所有的編碼。另外,我已經在使用cURL的curl_multi_exec。 – StackOverflowNewbie 2011-02-08 20:55:16

+0

太棒了,那麼我認爲你已經做了你所能做的。連接遠程網頁下載連接句柄所需的努力遠遠超出了收益遞減點。 – 2011-02-08 21:01:29

1

想到一些可能的解決方案。最簡單的一個可能是構建某種緩存機制。將響應存儲在磁盤上,並使用它,直到它變爲過時,然後執行新的請求來更新緩存。這一點應該大大提高你的表現。另一種實現方法是使用緩存代理服務器。

另一種選擇是簡單地用wget創建一個cronjob,每隔幾分鐘獲取需要的內容並將結果存儲在磁盤上。然後只需從您的應用程序訪問該內容。這樣,你永遠不必等待一個請求完成。

0

當然,只需使用curl multi即可讓請求並行運行。看看那個頁面上的例子。

作爲一個方面說明:這與單身人士或設計模式無關。儘管靜態允許您在Java中的請求之間保持持久的應用程序狀態,但在PHP中這是不可能的。