3

我拥有一个每分钟负载 cpu httpd 请求高的站点。我注意到我在每个 httpd 请求上都使用了“file_exists”。这个功能太重了吗?

4

3 回答 3

6

这个函数只会检查一个文件是否存在——这意味着对磁盘的访问(这可能需要一点时间,但也不会太多)

考虑到您的应用程序可能由数十个(如果不是数百个) PHP 文件组成,每个请求都必须读取这些文件,我认为一个没有file_exists任何区别。

(好吧,至少,只要您正在检查本地磁盘上的文件——不通过任何网络驱动器或类似的东西)


作为旁注:如果您想确定 CPU 在 PHP 脚本中的使用情况,您可能会对Xdebug 扩展感兴趣,它提供了分析功能。

您可以阅读我前段时间给出的这个答案,它很长:如何测量用 php 编写的代码的速度? ——我不会在这里复制粘贴。

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

于 2010-01-10T21:17:21.553 回答
2

现实一点,玩“猜测瓶颈”可能是一项毫无结果的任务——我建议使用分析器,例如Zend Studio中内置的分析器。

于 2010-01-10T21:20:22.390 回答
1

file_exists 通常非常便宜,尤其是因为结果缓存在php 的 stat 缓存中。. 像重型 DB 这样的区域往往是 CPU 的最大消耗者。

尝试一些分析以确定您的应用程序的哪个部分使用时间最长,这里有一些示例:

http://www.ibm.com/developerworks/opensource/library/os-php-fastapps2/

于 2010-01-10T21:18:27.970 回答