まとめ
そのタイトルのとおり、Guzzle ではドキュメントにあるように、時間を節約するために一度に複数のリクエストを送信できます。
$responses = $client->send(array(
$requestObj1,
$requestObj2,
...
));
(given that each request object is an instance of
Guzzle\Http\Message\EntityEnclosingRequestInterface)
応答が戻ってきたら、どの応答がどの要求に対するものかを識別するために、各要求をループして応答を取得できます (上記のコマンドを実行した後にのみ利用可能)。
$response1 = $requestObj1->getResponse();
$response2 = $requestObj2->getResponse();
...
B. 問題
リクエスト オブジェクトに同じデータが含まれている場合。元のリクエストを特定することは不可能です。
2 つの記事を作成する必要がある次のシナリオがあると仮定します: A と B の距離サーバー: something.com/articles/create.json
各リクエストには同じ POST データがあります。
subject: This is a test article
作成後、2 つの場所を含む Guzzle 応答が返されます。
something.com/articles/223.json
something.com/articles/245.json
上記の方法を使用して応答とその要求をリンクしても、要求オブジェクトがまったく同じであるため、どの応答がどの記事に対するものかはまだわかりません。
したがって、私のデータベースでは、結果を書き留めることができません。
article A -> Location: 245.json
article B -> Location: 223.json
それは逆になる可能性があるためです。
article A -> Location: 223.json
article B -> Location: 245.json
解決策は、POST リクエストに追加のパラメータを追加することです。
subject: This is a test article
record: A
しかし、距離サーバーはキー「レコード」を理解していないため、エラーを返し、記事を作成しません。距離サーバーはサードパーティのサーバーであり、その動作方法を変更することはできません。
これに対する別の適切な解決策は、リクエスト オブジェクトに特定の ID/タグを設定することです。これにより、後で識別できます。ただし、ドキュメントに目を通しましたが、次のようなリクエストを一意に識別する方法はありません
$request->setID("id1")
or
$request->setTag("id1")
これは何ヶ月も私を悩ませてきましたが、まだこの問題を解決できません.
解決策がある場合は、お知らせください。
どうもありがとう、そしてあなたは私を救ってくれました!!!!
この長い投稿を読んでくれてありがとう。