正如其標題,狂飲允許一次發送多個請求,以節省時間爲documentation。
$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();
...
乙問題
如果請求對象包含相同的數據。無法確定原始請求。
假設我們有以下情形,我們需要創建2篇:距離服務器上的A和B:something.com/articles/create.json
每個請求具有相同的POST數據:
subject: This is a test article
創建後,與2位置的狂飲反應回來:
something.com/articles/223.json
something.com/articles/245.json
用上面的方法來鏈接響應到其請求,我們仍然不知道哪個響應我s的文章,因爲請求對象是完全一樣的。
因此,在我的數據庫,我不能寫下來的結果是:
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/tag,以便我們可以在之後識別它。不過,我已經通過的文件看,但沒有方法來唯一地標識像
$request->setID("id1")
or
$request->setTag("id1")
這已被竊聽我個月,仍要求能不能解決這個問題。
如果您有解決方案,請讓我知道。
許多非常感謝,你救了我!
感謝您閱讀這篇較長的文章。
取決於用例,對於我使用域標識符的API。 –