【问题标题】:CPU load with file_exists in phpphp中file_exists的CPU负载
【发布时间】:2011-01-03 13:32:18
【问题描述】:

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

【问题讨论】:

    标签: php 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 中内置的分析器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        相关资源
        最近更新 更多