0
的AWS SDK for PHP documentation on upload()不上上傳成功如何很清楚,它是如何失敗的:如何確保使用S3Client :: upload()成功完成上載?
Returns
Guzzle\Service\Resource\Model
Returns the modeled result of the performed operation
沒有@throws
記錄在這裏,即使在我的測試中,當請求失敗,Guzzle\Http\Exception\CurlException
被拋出。
它是安全的說:
- 當它失敗時,我總能趕上與
Guzzle\Http\Exception\HttpException
- 失敗如果沒有拋出異常,則轉讓成功
或者:
- 是否還有其他例外(在
Aws
命名空間中?)可以拋出? - 我應該在返回的
Model
中尋找成功指示器嗎?
我有意關閉網絡接口,看看如果發生網絡錯誤會發生什麼情況。你可以很容易地以這種方式重現它。 'S3Exception'擴展了'ServiceResponseException',所以只有在接收到HTTP響應時纔會拋出它,並且如果網絡失敗,那麼這是一個Guzzle'HttpException'而不是? – Benjamin
是的,這聽起來不錯。不過,SDK會嘗試通過Guzzle Backoff插件重新嘗試某些[cURL級別的異常](https://github.com/guzzle/guzzle/blob/master/src/Guzzle/Plugin/Backoff/CurlBackoffStrategy.php)。你碰巧知道[cURL錯誤代碼是什麼](http://curl.haxx.se/libcurl/c/libcurl-errors.html)?有可能您需要將錯誤添加到插件中,或者請求多次失敗,並且SDK讓它冒出來。 –
絕對的,它可能已經嘗試過好幾次了,因爲在拋出異常之前花了一定的時間。這是一個例外:'未捕獲的異常'Guzzle \ Http \ Exception \ CurlException'帶有消息'[curl] 6:無法解析主機'xxx.s3.amazonaws.com'' – Benjamin