2016-04-04 65 views
0

我的图片按产品ID组织。 XX-1.jpg XX-2.jpg XX-3.jpg使用php扫描50,000+图片目录的快速方式

要查找1种产品的图像,我使用以下方法。

$all_images[$resolution]=glob("/home/imgimportsinc/public_html/sharing/images_by_product_id/{$resolution}/*.jpg"); 

然后我查找数组中的产品ID。 我的确有一个cron作业,可以完成上述操作,并且缓存存储了每个产品的图像URL,因此我无需每次都扫描图像。

我做得对吗还是有更快速/准确/正确的方法呢?

+3

那么,如果他们使用产品ID存储,那么它不应该只是创建路径的问题?为什么你需要搜索它们?他们已经不在吗? –

+1

^^和或在产品数据库中存储产品图像文件名称\位置 – 2016-04-04 00:56:03

+0

我需要对其进行扫描,因为如果稍后上载新照片或如果我删除照片该怎么办。除非我实际记录在数据库中,否则没有其他办法可以告诉我是否存在图像 –

回答

0

您可以使用glob这个

$dirname = "/home/imgimportsinc/public_html/sharing/"; 
$images = glob($dirname."*{$resolution}-*.{$extention}"); 
foreach($images as $image) { 
    echo '<img src="'.$image.'" /><br />'; 
} 
0

为了完整,注释的已经给你提示,较少的搜索将导致更少的计算时间。如果您可以跟踪删除/插入,则可以使用ID直接构建路径。

另一个小提示,使用GLOB_NOSORT作为一个标志能显著减少计算时间,如果你不需要排序的元素。