首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >file_exists( $path )检查$path的子目录吗?它的计算强度有多大?

file_exists( $path )检查$path的子目录吗?它的计算强度有多大?
EN

Stack Overflow用户
提问于 2013-07-26 12:49:49
回答 2查看 370关注 0票数 0

一个非常棘手的问题: php file_exists($path)是否检查$path的子目录??

它是磁盘读取密集型进程吗?这意味着它是否线性增加(多项式/指数)取决于目录中被检查的文件夹/文件的数量?

背景信息:我正在EC2上运行一些文件操作脚本,自从启动脚本以来,我的读取操作数一直呈指数增长。AWS的收费为0.11美元/万I/O请求,成本正在迅速增加:(

我分析了代码,我认为导致这种不断增加的性能损失问题的唯一部分是脚本检查文件是否存在,或者从S3桶下载它,因为其他几乎所有东西都是计算/写入或小读取操作。我有成千上万的文件,每一个3-5 MB,如果这是相关的。在每一个周期之后,脚本生成的文件很少类似大小等等。

编辑:修正以澄清吉姆的观点

编辑2:我询问的性能不是脚本运行的时间,而是磁盘读取的数量,因为这是由AWS单独负责的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-26 13:50:04

1 I/O是指将1块读或写到磁盘上。块大小通常很小,通常约为4KB。对于大量访问的文件,通常需要缓存来减少执行操作所需的总体I/O。

我认为1或以下的组合正在发生。

  1. 您低估了您正在来回复制的文件数量。一次读取或写入一次完整的3MB文件可能要花费大约750 I/O
  2. 您正在超出可用内存,迫使您的系统转向交换,这很可能是配置为写入EBS卷。使用free查看这个。
  3. 如果您还没有这样做,您可能需要考虑使用APC或其他操作码缓存。
  4. 您还可以挂载您的卷,禁用mtime和atime (更新修改的时间和访问时间)等功能。
票数 1
EN

Stack Overflow用户

发布于 2013-07-26 12:55:43

我不确定您的意思是file_exists($path)是检查路径的子目录,还是检查当前工作目录的子目录中的路径。

无论是哪种情况,答案都是否定的。$path被简单地视为路径,并且该方法确认该文件/目录是否存在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17881752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档