2017-02-05 15 views
3

我試圖用Guzzle將2GB文件上傳到Amazon S3。我流的內容和我的代碼如下所示:如何修改使用Guzzle捲曲的超時時間?

$credentials = new Credentials('access_id', 'access_key'); 

     $s3 = S3Client::factory(array(
      'credentials' => $credentials 
     ));; 

     try { 
      $s3->putObject(array(
       'Bucket' => $bucket, 
       'Key' => $obect, 
       'Body' => (strlen($body) < 1000 && file_exists($body)) ? Guzzle\Http\EntityBody::factory(fopen($body, 'r+')) : $body, 
       'ACL' => $acl, 
       'ContentType' => $content_type 
      )); 
      return true; 
     } catch (Aws\Exception\S3Exception $e) { 
      error_log($e -> getMessage() . ' ' . $e -> getTraceAsString()); 
      return false; 
     } 

現在我得到的錯誤是這樣的:

Fatal error: Uncaught exception 'Guzzle\Http\Exception\CurlException' with message '[curl] 28: Operation timed out after 30000 milliseconds with 0 out of -1 bytes received [url] https://xxxxx.s3.amazonaws.com/6e12e321-adac-42a0-a932-8f345f9dd9c6 ' in

我怎樣才能修改超時與狂飲捲曲?

回答

2

您可以通過這種方式設置捲曲選項:

$s3->putObject(array(
    'Bucket' => '...', 
    'Key' => '...', 
    'Body' => '...', 
    'ACL' => '...', 
    'ContentType' => '...', 
    'curl.options' => array(
     CURLOPT_TIMEOUT => 10, 
     CURLOPT_CONNECTTIMEOUT => 15 
    ) 
)); 

或者試試這個:

$s3->getConfig()->set('curl.options', array(
         CURLOPT_TIMEOUT => 10, 
         CURLOPT_CONNECTTIMEOUT => 15 
        ) 
); 
+0

只是一個供參考,CURLOPT_CONNECTTIMEOUT是不是一種選擇。它在示例中僅作爲選項列出,但實際上並不存在。它會發出警告。 –

+0

*您的*代碼可能存在問題?可能你想設置不是整數值?因爲此參數包含文檔。無論如何,這是一個新問題,你可以在這個網站上定期詢問。 – Ans