我正在尝试使用 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
)
);