【问题标题】:PHP IF Statement Evaluation & Server OverheadPHP IF 语句评估和服务器开销
【发布时间】:2010-11-20 02:02:10
【问题描述】:

我很好奇在评估 PHP if 语句时对服务器的影响是什么,即内存消耗和 CPU 使用率,以及这是否会随着流量的增长而成为主要问题?

例如,如果我在 WordPress 博客上的每个帖子摘要的主题中使用大量 PHP IF 语句,如果主页开始获得高流量,这是否需要更多的服务器资源?而且,在列出许多帖子的页面(即类别页面)上,这似乎会成为一个问题。

我认为在流量激增的情况下减少并非绝对必要的 IF 语句可能是个好主意。或者,这甚至是我担心的事情吗?

【问题讨论】:

    标签: php optimization evaluation overhead


    【解决方案1】:

    评估 1000 条 if 语句所花费的时间将完全被单个数据库查询所淹没。

    你需要:

    1. 配置文件以找出您的瓶颈所在
    2. Focus - 如果一个函数占用了总时间的 50%,那么让它快 10% 会比让一个很小的函数快 90% 更有效。

    编辑:

    数据库查询很慢(甚至是快速查询) - 您应该在合理范围内尽量减少查询。 在查询中,我认为检查 NULL 或特定值之间没有速度差异 - 如果存在差异,那将是微小的差异。

    【讨论】:

    • 好的,谢谢。我使用的大多数 IF 语句检查数据库中的值,即 IF NOT NULL 或是否存在特定值。因此,IF 语句本身可能不是问题,但它正在创建数据库查询这一事实是。检查字段是否不为空与检查字段是否具有与当前帖子相关的特定值之间有什么区别?
    • +1 用于添加“在合理范围内”作为对数据库查询警告的警告。不要试图将查询压缩到如此复杂的程度,以至于它们只会导致更多的开销。
    【解决方案2】:

    完全不用担心。

    【讨论】:

      【解决方案3】:

      我认为这是您不必担心的事情:如果您的应用程序对数据库执行一两个查询,那么这些查询将比几次(甚至超过几次)“if”花费更多的时间。

      这是一种“微优化”:如果您正在寻找流量高峰时的大优化,则应首先探索其他方法;-)

      对于一些(相当长的)解释/想法,你可以看看this answer我昨天给另一个问题。
      (我真的不想在至少几天过去之前重写任何内容^^)

      基本上,真正有帮助的是:

      • 使用操作码缓存,例如APC
      • 使用缓存:您缓存的数据越多,您必须进行的计算/数据库查询就越少,而这些通常会花费最重要的时间
      • 使用Xdebug 及其分析功能来确定您的应用程序中需要时间的内容
      • 使用正确的索引优化 SQL 查询
      • 如果你想走得更远,你可以使用反向代理来充当另一级缓存;例如,varnish

      【讨论】:

      • @downvoter :我很高兴被否决:这是 SO 工作方式的一部分;但我真的很想知道我所说的有什么问题:这是我不会在下一个网站上犯这个错误的唯一方法,我会给出优化建议......如果什么我说的完全错了,告诉我:我需要知道,所以下次我不会再说同样的废话了! (顺便说一句,当其他人被否决时,我也有同样的感觉:不解释错误有时是很粗鲁的,并且无助于任何人理解可以做得更好的地方:-()
      • 嗨帕斯卡。谢谢你的回答。 eAccelerator 怎么样?这就是我目前安装的。我看到几个人推荐 APC,所以我想知道它是否更好。
      • 您好,我从来没有使用过 eAccelerator,并且总是听说过 APC,所以我真的不能说;对不起...
      【解决方案4】:

      我认为我们需要给出一个更合乎逻辑的理由为什么它无关紧要......这是因为汇编程序中基本级别的 IF 语句来自 JNZ 助记符。这是一个 1 个“单词”值,意思是“如果不是零则跳转”。真正的重载将来自比较和评估条件,而不是 IF 语句本身。

      【讨论】:

      • 这仍然被网络延迟、数据库查询时间和浏览器渲染所掩盖......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      相关资源
      最近更新 更多