如何保留目录中存在的文件的文件或数据库?

时间:2012-02-20 04:06:04

标签: php

这个问题是我的优化图像文件夹/目录项目的下一步,并确保在不将优化图像移动到新目录的情况下不重新优化已经优化的图像。我在这里发布了一个问题How to avoid Optimizing images that are already optimized with PHP?

我的应用程序是一个用PHP编写的命令行工具,它包含多个Image Optimization工具并递归扫描提供的目录,并通过适当的优化程序运行所有图像。

现在,如果我有一个包含200张图像的文件夹并运行我的应用程序,它会尝试优化所有200张图像,这非常耗时。所以说我在我的项目中添加了另外5个图像,我需要再次运行应用程序,现在它将优化所有205个图像,而不仅仅是5个新图像。这是我试图解决的问题。我的想法是在图像文件夹中放置某种文件/数据库,当我的应用程序运行时,它将首先读入此文件中的所有图像,如果图像在此文件中,则它已经被优化我们不需要重新优化它。因此,在我的示例中,只会运行5个新图像,因为它们不在文件中。完成后,这5个新图像将合并到此文件中,因此在我的应用程序的第3次运行时,将跳过所有205个图像,因为它们已经过优化并添加到文件/ DB中。

我认为这将是一个非常好的方法,性能明智,但我对所有想法持开放态度,以便更好地改进我的当前想法甚至改进它?

考虑到一些问题,因为我的应用程序以递归方式运行提供的目录,如果我有一个包含20个图像和8个其他子文件夹的文件夹,这些都有图像,其中一些子文件夹有子文件夹同样,然后运行根提供的文件夹下的所有图像,无论它在层次结构中有多深。所以我不确定是否需要在每个子文件夹下都有一个单独的文件/ DB,列出已经在每个子文件夹下处理的文件,或者如果根文件夹下的1个文件/ DB就足够好了有相对于​​根文件夹的文件路径。

其他想法是,如果图像被删除,我是否需要以某种方式将其从此文件/数据库中删除,或者我不应该打扰,因为它可能不会影响任何事情?

我的主要问题是,这听起来像是一个很好的解决方案吗?图像文件夹中的文件或数据库类型文件列出已优化的文件?如果您认为是这样,我应该如何创建此文件,如果它是一个简单的文本文件,每行有一个带有路径的图像文件,或者一个XML文件或什么样的文件,PHP可能必须读取这些文件作为一个数组内存到内存然后当递归扫描我的图像目录时,它必须将它找到的每个图像与这个图像列表数组进行比较,以验证它是否已经在处理过的列表中,然后构建一个未处理的列表文件,然后处理这些文件

请分享您的想法,建议,批评等,我从来没有做过这样的事情

1 个答案:

答案 0 :(得分:1)

这是一个好主意,一般称为编目

我要做的事情是

  • 将“上次修改日期”添加到存储图像的db表中,以便如果因任何原因文件被覆盖,则可以再次优化
  • 第二,你不需要在每个子文件夹中使用单独的db文件我可能会在db表本身中存储目录或路径哈希,以便我知道是否已经优化

此外,我可以做另一件可能是过度杀伤但可管理的事情。

假设您将图像放在一个文件夹中,当您最终优化图像时,可以将其称为“传入”或“数据库”,然后将其移动到另一个文件夹称为“传出”或“文件系统”并将其从传入中删除。