【问题标题】:performance difference between cli and apache cgi mode for phpphp的cli和apache cgi模式之间的性能差异
【发布时间】:2016-06-21 08:55:33
【问题描述】:

我发现 php cli 和 cgi 模式之间存在显着的性能差异:

cli:

set : 1.853 seconds 54 qps
get : 2.226 seconds 45 qps
incr : 1.577 seconds 63 qps

cgi:

set : 1.063 seconds 94 qps 
get : 0.829 seconds 121 qps
incr : 1.037 seconds 96 qp

是巧合吗?还是有这种差异的原因?

【问题讨论】:

    标签: php apache command-line-interface


    【解决方案1】:

    考虑当您使用 php 作为 apache 模块时,当有人访问您的 Web 服务器时,会创建一个包含 php 的 apache 进程,并且 apache 进程调用 php。 所以一个主要区别是当你在cli模式下执行一个php脚本时你直接调用php但是当你首先使用apache时你调用apache并且apache有自己的初始化然后它调用php并且在那之后php将结果返回给apache然后apache将结果返回给已经访问服务器的http客户端。

    【讨论】:

    • 这听起来有点主观。我不确定。
    • 我想不出任何其他差异。因为在这两种情况下 php 编译器和执行器都是相同的。
    • mhndev 是真的,apache 的开销是这个原因
    • @MrezaJafari 但是apache版本运行得更快,而不是相反。
    【解决方案2】:

    考虑一下,也许通过 Apache 的 PHP 启用了 OpCache,这可以显着提高您的脚本性能。 在我的场景中,调用半径集成的 PHP 脚本通过 CLI 以 100 毫秒的速度运行。 使用指向 apache 的 CURL 到相同的脚本,运行时间为 25 毫秒。 性能提升的另一个原因可能是您使用 STATIC 池运行 PHP-FPM。 这减少了 Apache 调用和派生一个新的 PHP 进程来运行您的脚本的时间。 这在与我的相同脚本有数千次调用的环境中可能至关重要。

    【讨论】:

      猜你喜欢
      • 2015-09-04
      • 2017-01-10
      • 2010-11-21
      • 2012-05-26
      • 2013-09-02
      • 2014-03-15
      • 2010-12-07
      • 2017-06-05
      • 2011-12-03
      相关资源
      最近更新 更多