2014-12-01 25 views
-1

我使用捲曲,使HTTP請求:定期curl請求php,爲什麼它很慢?

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "some-site-without-many-photos"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 

我需要做環路申請高達200倍和獲取數據。我打了10次,耗時超過25秒......這是正常的嗎?該計劃非常緩慢。幾年前,我用C做了這個,我記得它快了很多。任何想法讓我的請求更快?也許只能從頁面獲取文本的方式?

+1

你正在提取html。你不能獲取「只是文本」。你必須獲取所有的html並提取你想要的文本。如果速度很慢,那麼你需要調查爲什麼它很慢。也許你的DNS解析器是borked。也許你的網絡鏈路有高丟包率和/或高延遲。也許其他網站負載很重。直到你弄清楚減速是什麼,我們無法幫助你。 – 2014-12-01 20:33:01

+0

你試過把它關掉再重新打開嗎? – 2014-12-01 20:33:53

+5

用戶名「warez」和你的其他人的網站;渴望幫助低 – 2014-12-01 20:34:55

回答

0

開始測量一些東西。您可以配置文件的總要求時間......

$start = gettimeofday(true); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "some-site-without-many-photos"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 
$end = gettimeofday(true); 

$request_time = $end - $start; 

或者,你可以測量DNS查找時間,看看這是問題:通過你的200名左右的請求

$start = gettimeofday(true); 
gethostbyname("some-site"); 
$end = gettimeofday(true); 

$request_time = $end - $start; 

這個循環並單獨查看時間(檢測一個請求的問題)或總計。

如果您要求跨不同主機的網頁,那麼您需要設置並拆除每個請求的TCP連接,這可能需要500ms以上的時間,具體取決於您的RTT。

測量,你會發現這個問題,雖然你可能會或可能無法做任何事情。

+0

好吧,我檢查了它,DNS時間是「0.0002 ...」一個請求時間需要「3.2 ..」這是非常緩慢的 - 我的瀏覽器做得更快,我試圖在另一個網站和它速度要快得多。我嘗試從ebay反饋頁面獲取數據,例如 http://feedback.ebay.com/ws/eBayISAPI.dll?ViewFeedback2&userid=coolhair88&ftab=AllFeedback&myworld=true&rt=nc 有任何想法,爲什麼需要3秒鐘的一個請求?請不要告訴我使用他們的API,我需要他們的API無法提供的東西 – warez 2014-12-01 21:07:04

+0

嗨!新信息,我嘗試使用fsockopen,它更快兩倍,但沒有足夠的,我上傳文件免費託管和哇驚喜它快3倍!這是爲什麼 ?通過更改代碼並上傳到更快速的託管服務器,它可以更快速地完成工作? – warez 2014-12-01 21:52:09