コマンドラインアプリケーションを作成しています。ログイン手順を実行した後、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);
}
しかし、ループ内の最初のリクエストのみが送信されているように見えるため、これは機能していないようです。
おそらく1つの解決策を使用curl_multi_init
しますが、それぞれのオプションを変更して同じcURLハンドルを複数回渡すことができるかどうかはわかりません。
これらの同時リクエストに対してサーバーからの応答は必要ありませんが、何らかの方法でそれを実行できれば素晴らしいと思います。
誰かが私を正しい方向に押してくれるなら、それは完璧でしょう。