我在製作命令行應用程序。我需要通過捲曲同時發出多個POST請求我在程序執行日誌之後 - 這意味着傳出請求都必須發送會話ID等使用POST的異步cURL
事件鏈如下:
- 我打開卷曲連接curl_init
- 我用curl_exec登錄遠程站點發送POST請求並獲取返回的HTML代碼作爲響應
- 我同時向同一站點發送多個POST請求。
我在考慮使用類似的東西:
// Init connection
$ch = curl_init();
// Set curl options
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, 1);
// Perform login
curl_setopt($ch, CURLOPT_URL, "http://www.mysite/login.php");
$post = array('username' => 'username' , 'password' => 'password');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$result = curl_exec($ch);
// Send multiple requests after being logged on
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);
for($i = 0 ; $i < 10 ; $i++){
$post = array('myvar' => 'changing_value');
curl_setopt($ch, CURLOPT_URL, 'www.myweb.ee/changing_url');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
curl_exec($ch);
}
但這似乎並沒有工作,因爲只有在循環中的第一個請求似乎被髮送。
使用curl_multi_init
大概會一個解決方案,但我不知道如果我可以通過它同捲曲用更改後的選項爲每個處理多次。
我不需要從服務器的同時請求任何迴應,但是這將是真棒,如果它也可以以某種方式完成。
這將是完美的,如果有人可以把我在正確的方向如何做到這一點。
從您展示的代碼來看,實際上應該可以工作。 –
這會工作,但該請求將依次進行,通過使用curl_multi你可以一次發送的所有請求,然後處理所有結果,當他們完成 – ninaj