2011-08-28 32 views
1

我試過使用滾動捲曲,Epi捲曲和其他PHP多捲曲解決方案,並且平均需要180秒才能將發佈的請求發送到JUST 40站點並接收數據(我正在談論接收只是小小的成功/失敗字符串)從他們,這是狗慢!PHP發送郵件請求到數百個網站的最佳方式是什麼?

它只適用於1個發佈請求,就像3-6秒,我甚至不知道這是否甚至是好的,因爲我看到其他人討論獲得1秒鐘的迴應,這是瘋狂的。

我也嘗試過使用proc_open來運行linux shell命令(curl,wget),但是這也很慢,而且不是服務器友好的。

我很想做的是一個能夠管理多個Wordpress網站並進行大規模升級,遠程發佈,blogroll管理等的WordPress插件。我知道有一個叫做managewp的網站。 com,但我不想使用他們的服務,因爲我想讓我管理的網站保密並開發自己的網站。我注意到他們的要求是他們的要求/迴應速度很快,我對他們如何能夠做到這一點感到困惑,特別是在數百個網站上。

那麼有人可以說清楚我如何能更快地發出這些發佈請求?

編輯

我一直在做一些思考,我問自己:「是什麼樣的獲取響應如此重要?它不喜歡被髮送沒有得到妥善處理的請求,他們都做99%的時間!「

所以我在想也許我可以發送所有的請求而不會得到迴應。如果我真的想跟蹤這些流程以及它們是如何去的,那麼我可以讓這些子站點發回一個post請求,並返回流程的狀態,並讓主站點將它們添加到數據庫表中, ajax請求查詢每10秒左右的狀態更新或類似的東西..這聽起來怎麼樣?

+2

可能沒有使用PHP的更新服務(多線程與Java)?你也可以嘗試一下PHP [http extension](http://php.net/http)(它也支持併發查詢)。 – mario

回答

0

cUrl作者約需0.6 - 每次請求

所以0.8秒約500網站,它可能需要從300到400秒。

你可以通過一個循環鞭打。

$ch = curl_init(); // Init cURL 

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/post.php"); // Post location 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 1 = Return data, 0 = No return 
curl_setopt($ch, CURLOPT_POST, true); // This is POST 

// Our data 
$postdata = array(
    'name1' => 'value1', 
    'name2' => 'value2', 
    'name3' => 'value3', 
    'name4' => 'value4' 
); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); // Add the data to the request 

$o = curl_exec($ch); // Execute the request 

curl_close($ch); // Finish the request. Close it. 

這也取決於您的連接速度。從數據中心來看,它應該沒問題,如果你從家庭位置進行測試,它可能會給出不太好的結果。

+0

這不是關於cURL需要多長時間,而是服務器處理請求需要多長時間。考慮到一些URL甚至不再存在,如果DNS解析失敗,這可能需要一分鐘。 – EarnestoDev

-3

我目前正在一個項目中使用PHP和curl_multi一次下載數百個URL。做批量最多250個網址並與CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT一起玩,以優化您的代碼的速度。

我有一個cURL類(2500+行)處理所有cURL魔術,包括多重和直接文件下載。 250個URL/15-25秒使用體面超時。 (但我不會分享它是免費的...)

PS下載很多的網址將需要使用臨時文件作爲捲曲下載的目標,而不是記憶。只是一個想法...

+0

哦,好可愛!我告訴他如何去做...不是嗎?但是我放了很多工作小時的代碼不來43。 – EarnestoDev

相關問題