从PHP服务器删除文件的有效方法

从PHP服务器删除文件的有效方法,php,performance,Php,Performance,所以我正在写一个脚本来从我的服务器上删除图像。基本上,我的数据库中有一个表,其中包含一个建筑物列表,每个建筑物都有多个与id关联的图像。我将图像保存在服务器上的单个文件夹中,每个图像具有以下命名格式: buildingID\u imagename.jpg。例如,如果我有一个id为id=23,我文件夹中的图像将显示为23_imagename1.jpg,23_imagename2.jpg,等等 现在,我知道了如何使用PHP使用unlink函数删除图像。但是,要删除所有图像,我需要逐个检查每个文件名,

所以我正在写一个脚本来从我的服务器上删除图像。基本上,我的数据库中有一个表,其中包含一个建筑物列表,每个建筑物都有多个与
id
关联的图像。我将图像保存在服务器上的单个文件夹中,每个图像具有以下命名格式:
buildingID\u imagename.jpg
。例如,如果我有一个id为
id
=
23
,我文件夹中的图像将显示为
23_imagename1.jpg
23_imagename2.jpg
,等等

现在,我知道了如何使用PHP使用
unlink
函数删除图像。但是,要删除所有图像,我需要逐个检查每个文件名,执行拆分字符串操作,检查id,然后删除。当我在那个文件夹中有10000张图片时,问题就出现了。这将成为一项昂贵的任务,尽管它会起作用

我的问题是,有没有一种简单的方法来检查图像名称并将其从文件夹中删除

谢谢

编辑
打了这个之后,我想到了一个可能的方法。将数据库表中的所有图像链接放入一个数组中,循环遍历并删除这些链接。这是一个好方法吗?当然,在我将图像放入数组后,我也将从表中删除它们。

迭代数据集,检查文件是否存在并删除该文件

也许可以将其作为cron作业执行,以防您认为此操作中可能有数千个文件

if(file_exists($fileName)){
    unlink($fileName);
}
您也可以使用

//此示例删除扩展名为.jpg且以23_imagename开头的所有文件

使用glob函数,您可以应用regex有效地查找要删除的文件


如果数据库表中存储了名称,只需检查
文件是否存在()
,然后
取消链接($file)
。将表中的名称准备到数组中是一个很好的解决方案,而不是使用文件操作。exec('rm 23_*')这将删除从23_@Tyr开始的所有文件,这是我认为的一个很好的解决方案。@ponury kostek这很有趣,使用这个解决方案有什么困难吗?它是如此简单和可怕