在我当前的项目中,我需要每4秒检查一次我的S3存储桶内容是否有新文件。在aws-php-sdk上放置一个“sort_by”ListObjects
每次使用该服务时,该脚本将运行约3个小时,并且最终会在单个前缀处具有大约2700个文件。
这是我的功能列出这些文件:
public function listFiles($s3Prefix, $limit, $get_after = ''){
$command = $this->s3Client->getCommand('ListObjects');
$command['Bucket'] = $this->s3_bucket;
$command['Prefix'] = $s3Prefix;
$command['MaxKeys'] = $limit;
$command['Marker'] = $s3Prefix.'/'.$get_after;
//command['Query'] = 'sort_by(Contents,&LastModified)';
$ret_s3 = $this->s3Client->execute($command);
$ret['truncated'] = $ret_s3['IsTruncated'];
$ret['files'] = $ret_s3['Contents'];
return $ret;
}// listFiles
我所需要的是通过上次更改场拿到文件,命令,所以我并不需要在2K的文件来获取。 是否有像
command['Query'] = 'sort_by(Contents,&LastModified)';
要添加在PHP API中的额外参数?
---------- ------------ EDITED
正如指出的阿布舍克米娜答案,外壳有可能使用
aws s3api list-objects --bucket "bucket-name" --prefix "some-prefix" --query "Contents[?LastModified>=\`2017-03-08\`]"
我在看的是如何在PHP中实现这一点。
PHP API:https://github.com/aws/aws-sdk-php
是的,从shell的文档中,我尝试了类似command ['Query'] ='sort_by(Contents,&LastModified)'。类似的东西是我正在寻找的东西。谢谢您的好意。 –
因为所有这些都被转换为相同的API定义。您可以试试这个命令并检查命令['Query'] =“Contents [?LastModified> = $ date”;'$ date将包含您在[aws-sdk-php]中提到的日期时间(http:// docs .aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listobjects)结果部分。 **'LastModified'=> ** –