PHP:选择添加到Amazon S3文件夹的最新文件

时间:2012-06-18 16:49:00

标签: php amazon-s3 amazon-web-services

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

我希望这项工作如下:

  1. 我将文件上传到s3文件夹
  2. 自动PHP脚本检测到已添加新文件并通知客户
  3. 为此,我不知何故需要列出亚马逊桶的文件夹中的所有文件,并找到最后添加的文件。

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

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

2 个答案:

答案 0 :(得分:1)

  

为此,我不知何故需要列出亚马逊桶的文件夹中的所有文件,并找到最后添加的文件。

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

  

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

您需要编写一个长期运行的PHP CLI脚本,该脚本以:

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

也许偶尔会在那里抛出sleep(1),这样你的CPU就不会那么糟糕,但你基本上需要睡眠和轮询,每次循环遍历所有的时间戳。

  

我已经尝试了$ s3-> list_objects(“mybucket”);,但它返回了存储桶中所有对象的列表,我没有看到只列出指定文件夹内文件的选项。 / p>

您需要在list_objects()来电中设置prefix参数。

答案 1 :(得分: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。