2

我正在开发一个自动更新解决方案,并且我正在使用 Amazon S3 进行分发。

我希望它的工作方式如下:

  1. 我将文件上传到 s3 文件夹
  2. 自动 PHP 脚本检测到已添加新文件并通知客户端

为此,我需要以某种方式列出亚马逊存储桶文件夹中的所有文件,并找到最后添加的文件。

我试过$s3->list_objects("mybucket");了,但它返回存储桶内所有对象的列表,我没有看到仅列出指定文件夹内文件的选项。

使用 Amazon S3 PHP api 执行此操作的最佳方法是什么?

4

2 回答 2

1

为此,我需要以某种方式列出亚马逊存储桶文件夹中的所有文件,并找到最后添加的文件。

S3 的 API 并未真正针对按修改日期排序进行优化,因此您需要调用list_buckets()并检查每个时间戳,始终跟踪最新的时间戳,直到到达列表末尾。

自动 PHP 脚本检测到已添加新文件并通知客户端

您需要编写一个长时间运行的 PHP CLI 脚本,该脚本开头为:

while (true) { /*...*/ }

也许偶尔会sleep(1)在那里扔一个,这样你的 CPU 就不会那么严重地飙升,但你基本上需要睡眠和轮询,每次循环遍历所有时间戳。

我试过 $s3->list_objects("mybucket");,但它返回存储桶内所有对象的列表,我没有看到仅列出指定文件夹内文件的选项。

您需要prefix在调用中设置参数list_objects()

于 2012-10-05T07:13:34.013 回答
0

S3 启动了存储桶http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html中文件的版本控制功能。

您可以通过调用 s3client.listVersions(request) 并根据需要指定 n 来获取最新的 n 个文件。请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/list-obj-version-enabled-bucket。 html

示例是在 java 中。不确定是否为版本控制添加了 PHP 的 API。

于 2015-03-13T00:20:27.207 回答