php - 如何有效获取匹配的 Amazon S3 文件列表?

标签 php optimization amazon-s3 amazon-web-services file-exists

假设一个平面 Amazon S3 存储桶中有 200,000 个图像。

桶看起来像这样:

000000-1.jpg
000000-2.jpg
000000-3.jpg
000000-4.jpg
000001-1.jpg
000001-2.jpg
000002-1.jpg
...
ZZZZZZ-9.jpg
ZZZZZZ-10.jpg

(6 位哈希值,后跟计数,后跟扩展名)

如果我需要匹配 000001-*.jpg 的所有文件,最有效的方法是什么?

在 PHP 中我会使用 rglob($path,'{000001-*.jpg}',GLOB_BRACE)获取一组匹配项,但我认为这不能远程工作。

我可以获取存储桶中所有文件的列表,然后在数组中查找匹配项,但这似乎是一个昂贵的请求。

你有什么建议?

最佳答案

Amazon 提供了一种直接使用 S3 API 执行此操作的方法。

在调用列出 S3 对象时,您可以使用 prefix 选项,以仅返回以前缀开头的对象。例如,使用适用于 PHP 的 AWS 开发工具包:

// Instantiate the class
$s3 = new AmazonS3();

$response = $s3->list_objects('my-bucket', array(
    'prefix' => '000001-'
));

// Success?
var_dump($response->isOK());
var_dump(count($response->body->Contents))

您可能还会发现 delimiter 选项很有用 - 您可以使用它来获取所有唯一的 6 位哈希值的列表。

关于php - 如何有效获取匹配的 Amazon S3 文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10606034/

相关文章:

php - 如何去掉 URL 的一部分?

php - 在 Symfony 中设置提交按钮的背景图片

javascript - 如何在文本编辑器中实时协作处理单个文档

actionscript-3 - 缓存具有多个参数的方法结果的最佳方法 - 对象作为字典中的键?

python - scipy 优化 fmin 语法

php - 在 opencart 中,当表中存在记录时,SELECT 查询给出空结果

c++ - 优化 C 代码

javascript - 无法访问保存在 Javascript 代码中的存储桶中的图像

java - 如何使用 AvroParquetWriter 并通过 AmazonS3 api 写入 S3?

sorting - 在 Amazon S3 中对大文件进行排序