我有一個應用程序使用cURL來獲取多個網站的內容。我想以某種方式優化它。是否有可能實現一個單一的設計模式,並以某種方式反饋curl我需要的內容的URL - 以便我只實例化一次?PHP:更快的cURL執行
現在,我設置並銷燬每個呼叫的連接。示例代碼將受到高度讚賞。
謝謝。
我有一個應用程序使用cURL來獲取多個網站的內容。我想以某種方式優化它。是否有可能實現一個單一的設計模式,並以某種方式反饋curl我需要的內容的URL - 以便我只實例化一次?PHP:更快的cURL執行
現在,我設置並銷燬每個呼叫的連接。示例代碼將受到高度讚賞。
謝謝。
這聽起來像是對我不必要的微觀優化。您將爲必須通過互聯網的流程節省一微秒的時間,以便從已經無法控制的資源中獲取大量數據。如果您只是想讓流程運行得更快,也許嘗試並行運行多個下載。
編輯:和/或確保你的curl支持壓縮的內容。
我已經處理所有的編碼。另外,我已經在使用cURL的curl_multi_exec。 – StackOverflowNewbie 2011-02-08 20:55:16
太棒了,那麼我認爲你已經做了你所能做的。連接遠程網頁下載連接句柄所需的努力遠遠超出了收益遞減點。 – 2011-02-08 21:01:29
想到一些可能的解決方案。最簡單的一個可能是構建某種緩存機制。將響應存儲在磁盤上,並使用它,直到它變爲過時,然後執行新的請求來更新緩存。這一點應該大大提高你的表現。另一種實現方法是使用緩存代理服務器。
另一種選擇是簡單地用wget創建一個cronjob,每隔幾分鐘獲取需要的內容並將結果存儲在磁盤上。然後只需從您的應用程序訪問該內容。這樣,你永遠不必等待一個請求完成。
當然,只需使用curl multi即可讓請求並行運行。看看那個頁面上的例子。
作爲一個方面說明:這與單身人士或設計模式無關。儘管靜態允許您在Java中的請求之間保持持久的應用程序狀態,但在PHP中這是不可能的。
我建議你使用一些框架來加載cURL模塊作爲組件。我使用yii框架http://www.yiiframework.com/。我使用yii社區提供的cURL擴展。 http://www.yiiframework.com/extension/curl – brainless 2011-02-08 20:23:13
@brainless - 我已經在使用CodeIgniter。我會研究它,看看我是否可以實施像你所建議的。 – StackOverflowNewbie 2011-02-08 21:03:02