2013-07-22 33 views
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中尋找成功指示器嗎?

回答

0

通常,沒有例外意味着成功,並且您可以捕獲Aws\S3\Exception\S3Exception以處理錯誤。但是,獲取該cURL異常很奇怪。你有關於特定錯誤的更多信息嗎?

+0

我有意關閉網絡接口,看看如果發生網絡錯誤會發生什麼情況。你可以很容易地以這種方式重現它。 'S3Exception'擴展了'ServiceResponseException',所以只有在接收到HTTP響應時纔會拋出它,並且如果網絡失敗,那麼這是一個Guzzle'HttpException'而不是? – Benjamin

+0

是的,這聽起來不錯。不過,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讓它冒出來。 –

+0

絕對的,它可能已經嘗試過好幾次了,因爲在拋出異常之前花了一定的時間。這是一個例外:'未捕獲的異常'Guzzle \ Http \ Exception \ CurlException'帶有消息'[curl] 6:無法解析主機'xxx.s3.amazonaws.com'' – Benjamin

相關問題