2014-01-09 107 views
0

我將使用CakePHP構建允許用戶搜索關鍵字的應用程序,即。牛奶,然後我會自動搜索當地的網上商店,以獲得牛奶的最佳定價,即。 walmart,shaws,stop & shop等(注:這是一個假設的情況,舉例說明我需要完成什麼),然後我會將結果顯示給用戶。使用CakePHP的HttpSocket或PHP的cURL從搜索頁面抓取多個站點

我想利用CakePHP的HttpSocket庫來完成此操作而不是cURL。

我需要將此設置作爲多線程,以便我可以更快地顯示結果,但出於性能考慮,最適合進行這些調用的地方,即Controller?基本上,我正在尋找洞察最好的方法來做出類似的工作,因爲它需要多線程,快速。

我之前沒有使用過CakePHP的HttpSocket庫,但我已經查看了它並快速測試它,它看起來非常強大。你對此有何看法?它是否將性能明智地比作PHP的cURL?

您的洞察力非常感謝。

+0

只是FYI:絕不是cURL多線程......它可以是非阻塞的,但不是多線程的。 –

+0

cURL多手柄怎麼樣?那可以被認爲是多線程的嗎? http://www.php.net/manual/en/function.curl-multi-init.php –

+0

「絕不」是相當明確的語言......我沒有更明確的方式來表達它,但將再次嘗試... cURL是_no way_多線程,curl多接口是非阻塞的,_not多線程_ ... –

回答

1

cURL比任何普通的PHP實現(比如CakePHP套接字)更快。

控制器是錯誤的地方,模型或自定義數據源將是適當的地方。您可以同時請求多個站點,並等待X秒,直到您取消未及時響應的請求。此外,我會緩存結果,以便您不必每次都要求價格。

根據價格變化的頻率,每天或每小時查詢一次或兩次所有商店可能是一個更好的主意,例如使用shell並更新數據庫中的價格。

+0

自定義數據源當然是一個偉大的方法,我沒有考慮。我一定會採取這種方法併爲此項目實施。我想避免使用數據庫,但我同意這是一個更好的主意,主要是因爲可用的產品數量巨大。但是,我可能會採納您的建議,並在需要時使用數據庫抓取時開發一個數據庫系統。感謝您的幫助! –