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? --我不会在这里复制粘贴。

您可能还想阅读我对那个问题的回答(我在其中写过关于 Xdebug 和分析的部分):Optimizing Kohana-based Websites for Speed and Scalability

【讨论】:

@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)

php НагрузкаЦП。 CPU负载

请教php并发导致cpu占用100%的问题

Xcode [noob] 释放对象,因为内存和 CPU 负载

Linux系统下怎么查看应用CPU、内存、负载?

睡眠如何消耗 CPU php [关闭]