Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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 一个文件夹中存储的文件太多会导致对其中一个文件夹的HTTP请求变慢吗?_Php_Windows_Http - Fatal编程技术网

Php 一个文件夹中存储的文件太多会导致对其中一个文件夹的HTTP请求变慢吗?

Php 一个文件夹中存储的文件太多会导致对其中一个文件夹的HTTP请求变慢吗?,php,windows,http,Php,Windows,Http,我的站点有近一百万张图片,它们存储在我的windows服务器上的一个文件夹中。 由于直接在桌面上打开这个文件夹会让我和我的CPU发疯,我想知道使用我的PHP脚本为HTTP请求获取其中一个文件夹是否也很费力那么,将它们分离到不同的文件夹会提高性能吗 否,性能不取决于目录中的文件数。在Windows资源管理器中打开文件夹速度较慢的原因是,它必须为每个文件呈现图标和其他各种与GUI相关的内容 当web服务器获取文件时,它不需要这样做。它只是(或多或少)直接转到磁盘上文件的位置 EDIT:million

我的站点有近一百万张图片,它们存储在我的windows服务器上的一个文件夹中。


由于直接在桌面上打开这个文件夹会让我和我的CPU发疯,我想知道使用我的PHP脚本为HTTP请求获取其中一个文件夹是否也很费力
那么,将它们分离到不同的文件夹会提高性能吗

否,性能不取决于目录中的文件数。在Windows资源管理器中打开文件夹速度较慢的原因是,它必须为每个文件呈现图标和其他各种与GUI相关的内容

当web服务器获取文件时,它不需要这样做。它只是(或多或少)直接转到磁盘上文件的位置


EDIT:million有点超出了您的文件系统的极限(我假设您使用的是NTFS)。似乎目录中超过10000个文件的任何内容都会降低性能。因此,不仅从性能的角度来看,而且从组织的观点来看,您也可以考虑将它们分成子目录。

在这种情况下,通常最好的答案是对其进行基准测试。创建一个打开1000个硬编码文件名并关闭它们的程序应该不会太难。在您的1000000多个目录和另一个仅包含1000个正在测试的文件的目录上运行测试,看看是否有差异


底层文件系统不仅会产生影响,而且通过网络访问也会影响结果。

将文件分为不同的目录很可能有助于提高性能。但正如mark所建议的,这可能值得进行基准测试

这通常是正确的,但如果在一个文件夹中有大量文件,则会对文件系统造成惩罚:有关性能权衡的详细讨论,请参阅。此外,如果您使用的是目录列表,则速度会特别慢。@Femi:谢谢您的补充。我对我的答案进行了相应的编辑。我看到过这样一种情况,即将文件拆分为单独的目录会完全降低性能,尽管在这种情况下,它会拆分为两个级别的深层层次结构。我没有预料到这一点,这就是为什么我提倡基准测试。