问题描述
运行 AWS S3 客户端函数似乎在我这边有问题并且占用了太多内存(生成“已用尽 3670016000 字节的允许内存大小”)。我在下面有以下代码片段
我尝试过的事情:
我会假设客户端实例在更改配置时给出了这些响应
我目前有 2 个空间(1 个是空的,1 个有大约 60GB 的文件 - 两者都在同一区域和帐户中)
public $config = [
's3-access' => [
'key' => 'some key','secret' => 'some secret','region' => 'ap-southeast-1','version' => 'latest','endpoint' => 'sgp1.digitaloceanspaces.com',]
];
public function createInstance(){
$client = new S3Client([
'credentials' => [
'key' => $this->config['s3-access']['key'],'secret' => $this->config['s3-access']['secret']
],'version' => $this->config['s3-access']['version'],'region' => $this->config['s3-access']['region'],'endpoint' => $this->config['s3-access']['endpoint']
]);
//Blank array result
$spaces = $client->listBuckets();
foreach ($spaces['Buckets'] as $space){
echo $space['Name']."\n";
}
//Memory size error exception with peak memory usage to 2813mb,allocated 3500mb
$client->createBucket([
'Bucket' => 'test-space-102201',]);
//list objects also generated the memory error
}
编辑:在 AWS S3 配置上打开调试模式后,我得到以下响应
-> 进入步骤init,名称为'idempotency_auto_fill' ------------------------------------- -------------- 命令设置为 array(3) { ["instance"]=> string(32) "000000007fb4cf920000000012b9d6de" ["name"]=> string(11) "ListBuckets " ["params"]=> array(2) { ["@http"]=> array(1) { ["debug"]=> 类型(流)的资源(307)} ["@context"]= > array(0) { } } } request is set to array(0) { } -> 进入步骤 init,name 's3.ssec' ------------------- ------------------ 没有变化 -> 进入步骤 init,名称 's3.source_file' ------------------ -------------------------- 没有变化 -> 进入步骤 init,name 's3.save_as' ---------- ------------------------------ 没有变化 -> 进入步骤 init,name 's3.location' ------ ------------------------------------- 没有变化 -> 进入步骤 init,名称 's3.auto_encode' - ----------------------------------------------------- 没有变化 -> 进入步骤 init,name 's3.head_object' ------------------------------------------- - 没有变化 -> 输入步骤验证,名称'验证' -------------------------------------------- 没有变化 - > 进入步骤validate,name 'input_validation_middleware' ----------------------------------------- -------------------- 没有变化 -> 进入步骤构建,名称为 'builder' ------------------ -------------------- request.instance 设置为 000000007fb4cf300000000012b9d6de request.method 设置为 GET request.headers 设置为 array(1) { ["X-Amz -Security-Token"]=> string(7) "[TOKEN]" } request.path 被设置为 sgp1.digitaloceanspaces.com -> 进入步骤构建,名称 'ApiCallMonitoringMiddleware' ----------- - - - - - - - - - - - - - - - - - - - - - - - - 没有变化 - > 进入步骤构建,名称 '' ------------------------------- request.instance 从 000000007fb4cf300000000012b9d6de 更改为 000000007fb4cf2c0000000012b9d6de request.headers .User-Agent 设置为 array(1) { [0]=> string(56) "aws-sdk-PHP/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64" } ->进入步骤构建,名称 'endpoint_parameter' ------------------- ------------------------------ 没有变化 -> 进入步骤构建,名称 's3.checksum' ------ ------------------------------------ 没有变化 -> 进入步骤构建,名称为 's3.content_type' ---------------------------------------------- 没有变化 ->进入step build,name 's3.endpoint_middleware' ---------------------------------------- ------------- 没有变化 -> 进入步骤构建,名称为's3.bucket_endpoint_arn' --------------- ------------------------------ 没有变化 -> 输入步骤标志,名称为“StreamRequestPayloadMiddleware” -------- -------------------------------------------------- -- 没有变化-> 输入步骤符号,名称为'invocation-id' ---------------------------------- --------- request.instance从000000007fb4cf2c0000000012b9d6de变为000000007fb4cf280000000012b9d6de request.headers.aws-SDK-调用-ID被设置为阵列(1){[0] =>串(32) “03e4030ef1f4fd18f7d38b8265b34b7f”} - > 进入步骤标志,名称为'retry' ----------------------------------- request.inst ance 从 000000007fb4cf280000000012b9d6de 更改为 000000007fb4cf270000000012b9d6de request.headers.aws-sdk-retry 被设置为 array(1) { [0 }]'=> string(1) {[0}]'=> 签名'-> 000000007fb4cf270000000012 ---------------------------------- request.instance 从 000000007fb4cf270000000012b9d6de 更改为 000000007fb4cf340000000012b9d6de request.headers.x-amz- content-sha256 被设置为数组(1) { [0]=> string(64) "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } request.headers.X-Am01) { array to "20210423T110304Z" } request.headers.Authorization 被设置为 array(1) { [0]=> string(211) "AWS4-HMAC-SHA256 Credential=[KEY]/20210423/ap-southeast-1/s3/aws4_request,SignedHeaders=x-amz-content-sha256;x-amz-date,Signature=[SIGNATURE] } -> 输入步骤标志,名称 's3.put_object_url' ---------------- ------------------------------- 没有变化 -> 输入步骤标志,名称为's3.permanent_redirect' ----- ---------------------------------------------- 没有 c挂起 -> 进入步骤尝试,命名为'ApiCallAttemptMonitoringMiddleware' --------------------------------------- ------------------------- 没有变化 * 尝试 103.253.144.208:80... * 连接到 sgp1.digitaloceanspaces.com (103.253 .144.208)端口80(#0)> GET / HTTP / 1.1主机:sgp1.digitaloceanspaces.com AWS-SDK-调用-ID:03e4030ef1f4fd18f7d38b8265b34b7f AWS-SDK重试:0/0的x AMZ-内容-SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X -Amz-Date:20210423T110304Z 授权:AWS4-HMAC-SHA256 Credential=[KEY]/20210423/ap-southeast-1/s3/aws4_request,Signature=[KEY]/20210423/ap-southeast-1/s3/aws4_request SIGNATURE] 用户代理:aws-sdk-PHP/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64 GuzzleHttp/7 * 将包标记为不支持多用途 https://sgp1.digitaloceanspaces.com/ GET / HTTP / 1.1主机:sgp1.digitaloceanspaces.com AWS-SDK-调用-ID:03e4030ef1f4fd18f7d38b8265b34b7f AWS-SDK重试:0/0的x AMZ-内容-SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X-AMZ-日期:20210423T110304Z用户代理: aws-sdk-PHP/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64 GuzzleHttp/7 * 旧的 SSL 会话 ID 已过时,删除 * 将包标记为不支持多用途 字符串(32) "000000007fb4cf360000000012b9d6de" ["数据"]=> 数组(3) { ["存储桶"]=> 数组(0) { } ["所有者"]=> 数组(2) { ["displayName"]=> string(0) "" ["ID"]=> string(9) "anonymous" } ["@Metadata"]=> array(4) { ["statusCode"]=> int (200) ["effectiveUri"]=> string(27) "sgp1.digitaloceanspaces.com" ["headers"]=> array(4) { ["date"]=> string(29) "Fri,23 Apr 2021 11:03:07 GMT" ["content-length"]=> string(3) "215" ["content-type"]=> string(23) "text/xml; charset=utf-8" ["strict -transport-security"]=> string(44) "max-age=15552000; includeSubDomains; preload" } ["transferStats"]=> array(0) { } } } } 包含步骤时间:0.024339914321899 array(0) { } } 包含步骤时间:0.026099920272827
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)