2017-02-05 6 views
3

Я пытаюсь загрузить файл 2GB на Amazon S3 с помощью Guzzle. Я потоковое содержимое и мой код выглядит следующим образом:Как изменить тайм-аут для завивки с помощью 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

Просто FYI, CURLOPT_CONNECTTIMEOUT это не вариант. Он указан один раз в примере в качестве опции, но фактически не существует. Он выдаст предупреждение. –

+0

Может быть, есть проблемы в * вашем * коде? Может быть, вы хотите установить не целое значение? Поскольку этот параметр содержит документацию. В любом случае, это новый вопрос, и вы можете задать его на этом сайте. – Ans

 Смежные вопросы

  • Нет связанных вопросов^_^