簡體   English   中英

PHP將帖子請求發送到數百個站點的最佳方法?

[英]PHP best way to send post requests to hundreds of sites?

我嘗試使用Rolling Curl,Epi Curl和其他PHP多卷曲解決方案,平均需要180秒才能將發布請求發送到40個站點​​並接收數據(我說的是接收很小的內容小小的成功/失敗字符串),那真是太慢了!!!

它只適合1個帖子請求(大約3到6秒),而且我什至不知道那是否還不錯,因為我看到其他人在談論獲得1秒響應,這很瘋狂。

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

我幾乎想做的是一個Wordpress插件,該插件能夠管理多個Wordpress網站並進行大規模升級,遠程發布,博客記錄管理等。我知道那里有一個名為managewp.com的網站,但是我不想使用他們的服務,因為我想讓自己管理的網站保持私密並自行開發。 我對他們的注意是,他們的請求/響應非常快,我為他們如何做到這一點感到困惑,尤其是在數百個站點中。

所以有人可以說明我如何更快地發出這些發帖請求嗎?

編輯

我一直在思考,問自己:“獲取響應有什么重要意義?這不像發送的請求沒有得到正確的處理,它們都有99%的時間都在處理!”

所以我在想也許我可以發送所有請求而沒有得到響應。 而且,如果我真的想對這些流程及其進行方式進行一些跟蹤,那么我可以讓那些子站點將狀態如何進行的狀態發送回發請求,並讓主站點將其添加到數據庫表中並具有ajax請求查詢(例如每10秒左右)以獲取狀態更新或類似信息。聽起來如何?

每個請求的時間約為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.

這也取決於您的連接速度。 從數據中心應該沒問題,如果您在家中進行測試,可能會得到不理想的結果。

我目前正在使用PHP和curl_multi一次下載數百個URL的項目。 批量處理多達250個URL,並使用CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT來優化代碼的速度。

我有一個cURL類(2500多行),處理所有cURL魔術,包括多文件下載和直接文件下載。 250個網址/ 15到25秒,使用適當的超時時間。 (但我不是免費共享它的...)

PS :要下載許多URL,將需要使用臨時文件作為cURL下載目標,而不是內存。 只是一個想法...

暫無
暫無

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

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