Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 实现基于文件的缓存的最佳实践_Php_Caching_Io - Fatal编程技术网

Php 实现基于文件的缓存的最佳实践

Php 实现基于文件的缓存的最佳实践,php,caching,io,Php,Caching,Io,我正在为我的php应用程序实现一个基于文件的缓存系统。使用时,它可以处理存储在同一文件夹中的约200000个文件,这使得管理变得困难:计算文件夹的总大小或列出其中的文件几乎不可能在合理的时间内完成 我的问题是:将文件保存在单独的文件夹中是否有利于性能?这能减少IO时间吗?在现代文件系统(比如ext3)上,打开单个文件时,目录中的ntfs 200K文件不会变慢。当然,登录速度会慢一些,但将文件分发到多个目录对您并没有帮助。这只会使登录速度变慢,访问时间不受影响。我见过的大多数文件缓存系统都使用基于

我正在为我的php应用程序实现一个基于文件的缓存系统。使用时,它可以处理存储在同一文件夹中的约200000个文件,这使得管理变得困难:计算文件夹的总大小或列出其中的文件几乎不可能在合理的时间内完成


我的问题是:将文件保存在单独的文件夹中是否有利于性能?这能减少IO时间吗?

在现代文件系统(比如ext3)上,打开单个文件时,目录中的ntfs 200K文件不会变慢。当然,登录速度会慢一些,但将文件分发到多个目录对您并没有帮助。

这只会使登录速度变慢,访问时间不受影响。我见过的大多数文件缓存系统都使用基于文件名哈希的树方法。这大大减少了每个目录的文件数。i、 e文件bunny.txt sha1 0d9228b316d694f2cb1a9add3fb71e29e55a060a将存储在0/d/9/0d9228b316d694f2cb1a9add3fb71e29e55a060a。树的深度可以根据您的需要进行调整。我们已经超越了文件缓存,但如果您查看任何页面上的JS和CSS文件,您可以看到我们如何以几乎相同的方式组合它们。看起来很像@Soohjun提到的。对我来说,最重要的是访问时间,大多数时候操作只是查找和读取数据file@JavierMar它不会加快访问时间,但可以使处理缓存本身变得更容易。如果您想手动处理一个文件夹中的200k文件,那么这将是一个问题。