簡體   English   中英

使用PHP和Linux更好地支持CURL

[英]Better support for CURL with PHP and Linux

我是twittertrend.net的開發人員,我想知道是否除了做curl_multi以外,還有沒有更快的方法來獲取URL標頭? 我每分鍾處理超過250個URL,從PHP的角度來看,我需要一種非常快速的方法來完成此操作。 可以使用bash腳本,然后輸出標頭或C應用程序,可以更快嗎? 我主要只用PHP編程,但是我可以學習。 目前,CURL_MULTI(同時提供6個URL,可以很好地完成工作,但是我希望更快一些嗎?最終,我想堅持使用PHP進行任何MySQL存儲和處理。

謝謝,James Hartig

我最近寫了一篇有關如何加快curl_multi的博客文章。 基本上,我會在每個請求處理完畢后立即對其進行處理,並使用隊列來一次處理大量請求。 我在這項技術上取得了很好的成功,並且正在使用它每分鍾處理大約6000個RSS feed。 我希望這有幫助!

http://onlineaspect.com/2009/01/26/how-to-use-curl_multi-without-blocking/

獲取URL標頭的最簡單方法是使用get_headers() 性能方面,我認為您無法擊敗curl_multi,但請嘗試對其進行基准測試並看看。 很難說。

回復:threading-via-bash-script是有可能的,但不太可能:此類腳本的進程創建開銷可能會降低速度。

如果是您要導入的文件,請啟動一個僅執行此類解析的守護程序,然后在本地連接到該守護程序。 然后,您可以使用C或C ++或其他方式使該守護進程盡快完成。

curl_multi +這些選項可能是您最好的選擇:

curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_NOBODY, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);

唯一的其他選擇可能是將wget與

--server-response

然后使用C / C ++,Java等對其進行多線程處理。我不相信這最終將是一個更快的選擇。

我認為您需要一個多進程批處理URL提取守護程序。 PHP不支持多線程,但是沒有什么可以阻止您生成多個PHP守護進程。

話雖如此,PHP缺乏適當的垃圾收集器意味着長時間運行的進程可能會泄漏內存。

運行一個守護程序,該守護程序會生成php程序的許多實例(可配置但可控制的數量),這些實例當然必須能夠讀取工作隊列,獲取URL並以多種方式寫出結果,工藝安全; 多個proc不應最終嘗試完成相同的工作。

您將希望所有這些都作為守護程序自主運行,而不是從Web服務器運行。 真。

如果您不介意入門,可以使用套接字函數發送管道式原始HTTP 1.1請求。

了解您當前正在使用的瓶頸在哪里-網絡,CPU等會很有幫助...

好了,我計算出以下內容:每個URL get_headers = .0606秒cURL =每個URL .01235 gethostbynamel =每個URL .001025秒

我要做的是先運行gethostbynamel()然后運行cURL,這應該減少時間,因為它將一直解析主機,因此cURL永遠不必卡住加載URL。

有異議嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM