Amazon S3上的file_exists

时间:2012-09-12 17:48:02

标签: php amazon-s3

我有一个网页,其中列出了数千个图像文件链接。目前处理这种方式的方法是使用一个非常大的HTML文件,该文件使用图像名称和图像文件的链接进行手动编辑。这些图像管理得不是很好,因此很多链接都被破坏或名称错误。

以下是HTML文件中数千行中一行的示例:

    <h4>XL Green Shirt<h4>
<h5>SKU 158f15 </h5>
    [<a href="http://website.com/images/products/TIFF/158f15.tif" target="_blank">TIFF</a>] 
    [<a href="http://website.com/images/products/158f15.jpg" target="_blank">JPEG</a>]
    [<a href="http://website.com/images/products/PNG/158f15.png" target="_blank">PNG</a>]
    <br />

我有关于数据库中图像的产品信息,所以我的解决方案是用PHP编写一个页面来遍历数据库中的每个产品编号,看看文件是否存在具有相同id的文件,然后显示适当的链接和信息。

我使用PHP函数file_exists()完成了这个,因为产品ID与文件名相同,并且它在我的本地机器上运行良好。问题是所有图像都托管在AmazonS3上,因此向S3运行此功能数千次始终会导致请求超时。我已经尝试过类似的PHP函数以及ping URL和测试200或404响应,这些都是暂时的。

是否有解决方案可以检查远程URL上是否存在文件并消耗少量资源?还是有一种更新颖的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为您最好确保在将记录放入数据库时​​强制执行文件的存在,而不是在每次加载页面时检查是否存在数千个文件。

话虽这么说,替代解决方案可能会将s3fs与本地存储缓存目录一起使用,以检查文件是否存在。这比直接检查S3存储要快得多。 s3fs还可以提供一种将新文件写入S3存储的便捷方式。