我有一个充满图像ID的数据库,这些ID对应于存储在服务器上的图像的文件名。我想检查图像目录中的所有文件是否都存在于数据库中,如果没有,则返回仅 的数组 。数据库中。
目前我正在使用scandir
获取目录中的文件数组,然后从SQLite数据库中检索所有图像ID,并使用array_diff
返回已存在的所有文件D B。
我认为这根本不是一种非常有效的方法,特别是当服务器上的文件数量增加时。我正在使用PHP。
答案 0 :(得分:2)
您可以在查询数据库之前对文件名数组进行排序,然后在从数据库查询中检索结果时扫描此已排序的数组(也按文件名排序)。
但是,您当前的解决方案很好,因为阵列操作是在内存中进行的,因此相当便宜。
你做的 不 想要做的是:
这些操作中的任何一个都非常昂贵。几乎任何其他解决方案都可以正常运行,直到你获得100,000个文件。