如何使用PHP删除AWS S3上早于x时间的文件

如何使用PHP删除AWS S3上早于x时间的文件,php,amazon-s3,aws-sdk,Php,Amazon S3,Aws Sdk,但是,我已经看到,这不适合我,因为我有一个公共(未经验证的标识池)可以上传到我的bucket中。由于这是公开的,我不相信上传者会设置过期时间 我已经看到了,但这似乎并不表明对象上有创建、添加、上载或更新的时间。因此,我不确定如何通过对象检查进行集成,如果它们超过x倍,则删除它们。未经授权的用户只能上传他们无法查看/编辑或删除对象,但我不能信任来自他们的任何形式的信息,因此S3是否有某种形式的附加时间,我可以在PHP中访问,如果是这样的话,如何访问?我发现有一个最新更新的时间,它被称为LastMo

但是,我已经看到,这不适合我,因为我有一个公共(未经验证的标识池)可以上传到我的bucket中。由于这是公开的,我不相信上传者会设置过期时间


我已经看到了,但这似乎并不表明对象上有创建、添加、上载或更新的时间。因此,我不确定如何通过对象检查进行集成,如果它们超过x倍,则删除它们。未经授权的用户只能上传他们无法查看/编辑或删除对象,但我不能信任来自他们的任何形式的信息,因此S3是否有某种形式的附加时间,我可以在PHP中访问,如果是这样的话,如何访问?

我发现有一个最新更新的时间,它被称为
LastModified
,我是用PHP找到的

$iterator = $this->client->getIterator('ListObjects', array(
    'Bucket' => $bucketName
));
foreach($iterator as $object){
    var_dump($object); die();
}
这意味着我可以执行以下代码来计算从上传到现在的时间。对于这个例子,我将x设置为24小时前

$iterator = $this->client->getIterator('ListObjects', array(
    'Bucket' => $bucketName
));
$xtime = strtotime("now -24 hours");
foreach($iterator as $object){
    $uploaded = strtotime($object["LastModified"]->date);
    if($uploaded < $xtime){
        $this->client->deleteObject(array(
            "Bucket"        => $bucketName,
            "Key"           => $object["Key"]
        ));
    }
}
$iterator=$this->client->getIterator('ListObjects',array(
“Bucket”=>$bucketName
));
$xtime=STROTIME(“现在-24小时”);
foreach($iterator作为$object){
$uploaded=STROTIME($object[“LastModified”]->date);
如果($上传<$xtime){
$this->client->deleteObject(数组)(
“Bucket”=>$bucketName,
“Key”=>$object[“Key”]
));
}
}

在PHP和bash中都有一个解决方案。如果它没有进入API服务器的生产公共端点,那就太好了。恐怕我无法在公共端点上放置shell命令:)我希望得到一个纯粹的PHP实现端注意:您可以用它在N天后自动删除对象这会对每个文件执行http请求,对吗?这不是批量删除?是的,这就是
$This->client->deleteObject
调用在循环中对每个项目执行的操作