PHP 的 AWS SDK 有什么方法可以抵消结果?
Any way to offset results with AWS SDK for PHP?
我目前正在扫描我的 S3 存储桶中的文件夹并删除不再存在于我的数据库中的文件。问题是我有数百万个文件,所以无法一次扫描它。
// get files
$files = $s3->getIterator('ListObjects', array(
"Bucket" => $S3Bucket,
"Prefix" => 'collections/items/',
"Delimiter" => '/'
), array(
'return_prefixes' => true,
'names_only' => true,
'limit' => 10
));
文档中包含一些关于限制结果的内容,但我找不到任何关于偏移的内容。我希望能够从 0 开始,扫描 500 个项目,删除它们,停止,保存最后扫描的索引,然后再次 运行 脚本,从保存的索引 (501) 开始,扫描 500 个项目,等等上。
SDK 是否提供某种偏移选项?它叫别的东西吗?或者您能推荐一种扫描如此大文件夹的不同方法吗?
记住您处理的最后一个键并将其用作标记参数。
$files = $s3->getIterator('ListObjects', array(
"Bucket" => "mybucket",
"Marker" => "last/key"
));
顺便说一句,不要设置限制,它会变慢。限制 10 将导致每 10 个对象请求 API,API 每个请求最多可以 return 1000 个对象。
我目前正在扫描我的 S3 存储桶中的文件夹并删除不再存在于我的数据库中的文件。问题是我有数百万个文件,所以无法一次扫描它。
// get files
$files = $s3->getIterator('ListObjects', array(
"Bucket" => $S3Bucket,
"Prefix" => 'collections/items/',
"Delimiter" => '/'
), array(
'return_prefixes' => true,
'names_only' => true,
'limit' => 10
));
文档中包含一些关于限制结果的内容,但我找不到任何关于偏移的内容。我希望能够从 0 开始,扫描 500 个项目,删除它们,停止,保存最后扫描的索引,然后再次 运行 脚本,从保存的索引 (501) 开始,扫描 500 个项目,等等上。
SDK 是否提供某种偏移选项?它叫别的东西吗?或者您能推荐一种扫描如此大文件夹的不同方法吗?
记住您处理的最后一个键并将其用作标记参数。
$files = $s3->getIterator('ListObjects', array(
"Bucket" => "mybucket",
"Marker" => "last/key"
));
顺便说一句,不要设置限制,它会变慢。限制 10 将导致每 10 个对象请求 API,API 每个请求最多可以 return 1000 个对象。