我正在制作一个命令行应用程序。执行登录程序后,我需要同时通过 cURL 发送多个 POST 请求 - 这意味着传出请求必须发送会话 ID 等。
事件链如下:
- 我用 curl_init 打开 cURL 连接
- 我登录到使用 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 句柄并更改每个选项。
对于这些同时请求,我不需要服务器的任何响应,但如果它也可以以某种方式完成,那就太棒了。
如果有人可以将我推向正确的方向,那将是完美的。