比较目录状态或哈希以获取乐趣和收益的最快方法

jhogendorn:

我们有一个PHP应用程序,并认为让该应用程序知道自上次执行以来其外观是否发生变化可能会更有利。主要是由于管理缓存等,并且知道有时不记得在更改时清除缓存的人员访问我们的应用程序。(改变人民是显而易见的答案,但是a,不是真正可以实现的)

我们提出了这一点,这是我们设法实现的最快速度,在典型项目的开发人员计算机上平均运行0.08。我们已经试验了shasum,md5和crc32,这是最快的。我们基本上是对每个文件的内容进行md5处理,并对输出进行md5处理。安全性不是问题,我们只是对通过不同的校验和检测文件系统更改感兴趣。

time (find application/ -path '*/.svn' -prune -o -type f -print0 | xargs -0 md5 | md5)

我想问题是,这可以进一步优化吗?

(我意识到修剪svn会产生成本,但是find花费的时间最少,因此花费的时间非常短。我们正在工作副本atm上对其进行测试)

jhogendorn:

我们不想使用FAM,因为我们需要将其安装在服务器上,而这并非总是可能的。有时,客户会坚持要求我们在损坏的基础架构上进行部署。由于它已经停产,因此也很难使该更改获得批准。

提高问题原始版本速度的唯一方法是确保文件列表尽可能简洁。IE仅对更改后真正重要的目录/文件进行哈希处理。删除不相关的目录可以大大提高速度。

除此之外,应用程序正在使用该功能检查是否有更改,以便执行高速缓存清除(如果有)。由于我们实际上并不希望在执行此操作时暂停应用程序,因此最好将此类事情作为使用fsockopen的异步过程进行认真处理。总体上讲,这可以提供最佳的“速度提升”,只是要注意比赛条件。

将其标记为“答案”并提高FAM答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章