我正在开发自动更新解决方案,而我正在使用Amazon S3进行分发。
我希望这项工作如下:
为此,我不知何故需要列出亚马逊桶的文件夹中的所有文件,并找到最后添加的文件。
我已经尝试了$s3->list_objects("mybucket");
,但是它返回了存储桶中所有对象的列表,我没有看到只列出指定文件夹中的文件的选项。
使用Amazon S3 PHP API执行此操作的最佳方法是什么?
答案 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。