php中file_exists的CPU负载
Posted
技术标签:
【中文标题】php中file_exists的CPU负载【英文标题】:CPU load with file_exists in php 【发布时间】:2011-01-03 13:32:18 【问题描述】:我拥有一个每分钟 cpu httpd 请求负载很高的站点。我注意到我在每个 httpd 请求上都使用了“file_exists”。那个功能很重吗?
【问题讨论】:
【参考方案1】:这个函数只会检查一个文件是否存在——这意味着访问磁盘(这可能需要一点时间,但也不会太多)
考虑到您的应用程序可能由几十个(如果不是数百个) 的 php 文件组成,每个请求都必须读取这些文件,我认为一个 file_exists
没有任何区别。
(好吧,至少,只要您正在检查本地磁盘上的文件——而不是通过任何网络驱动器或类似的东西)
作为旁注:如果您想确定 CPU 在 PHP 脚本中的使用情况,您可能会对 Xdebug extension 感兴趣,它提供了分析功能。
您可以阅读我前段时间给出的这个答案,它很长:How can I measure the speed of code written in php? --我不会在这里复制粘贴。
您可能还想阅读我对那个问题的回答
【讨论】:
@middaparka : 谢谢 :-) ;;回答后,我想“为什么不提供更多信息”,并开始搜索我给出的一些旧答案(我记得曾经给出过一些关于 xdebug 的长答案^^)【参考方案2】:file_exists 通常非常便宜,特别是因为结果缓存在php's stat cache.. 像重型 DB 这样的区域往往是 CPU 的最大消耗者。
尝试进行一些分析以确定您的应用程序的哪一部分使用时间最长,这里有一些示例:
http://www.ibm.com/developerworks/opensource/library/os-php-fastapps2/
【讨论】:
【参考方案3】:现实一点,玩“猜测瓶颈”可能是一项非常徒劳的任务 - 我建议使用分析器,例如 Zend Studio 中内置的分析器。
【讨论】:
以上是关于php中file_exists的CPU负载的主要内容,如果未能解决你的问题,请参考以下文章
记录一个多核CPU负载不均衡问题(动态绑定进程到指定cpu:taskset -pc $CPU $PID)