如何使用 Guzzle 修改卷曲的超时



我正在尝试使用 Guzzle 将 2GB 文件上传到 Amazon S3。我正在流式传输内容,我的代码如下所示:

$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)) ? GuzzleHttpEntityBody::factory(fopen($body, 'r+')) : $body,
                'ACL'    => $acl,
                'ContentType' => $content_type
            ));
            return true;
        } catch (AwsExceptionS3Exception $e) {
            error_log($e -> getMessage() . ' ' . $e -> getTraceAsString());
            return false;
        }

现在我得到的错误是这样的:

致命错误:未捕获的异常 "Guzzle\Http\Exception\CurlException",消息"[curl] 28: 操作在 30000 毫秒后超时,0 个字节(满分 -1 个字节( 收到 [网址] https://xxxxx.s3.amazonaws.com/6e12e321-adac-42a0-a932-8f345f9dd9c6' 在

如何使用 Guzzle 修改 curl 的超时?

您可以通过以下方式设置 curl 选项:

$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
                     )
);

最新更新