【问题标题】:Do too many Undefined Index or Undefined Variable errors effect server performance是否有太多未定义索引或未定义变量错误会影响服务器性能
【发布时间】:2011-03-17 18:52:53
【问题描述】:

由于通知在我的 php 配置中已关闭,因此不会在网站中显示通知。 但我可以在服务器日志/php 日志中看到很多未定义索引/未定义变量

这是否会影响系统性能。

如果我标记这些变量并将 null 分配给这些变量,则会出错。 正如它所定义的那样。

另一个疑问是,在某些情况下这些变量不会被使用。

所以我声明并分配了一些变量,如果我不使用这些变量。这会影响性能吗?

【问题讨论】:

  • 通知本身不会在探查器中引起注意,但日志记录会。避免在生产系统上使用 E_ALL(=调试设置)启用 error_reporting。
  • @mario ...running shitty legacy code 应该添加到您的评论中
  • 查看我对这个问题的回答:stackoverflow.com/questions/1868874/…
  • 顺便说一句,如果你使用一个字母的变量名,你会节省解析时间。

标签: php error-handling


【解决方案1】:

没有。

您的所有顾虑都与性能无关。

性能并不是唯一需要关心的问题。

我最近注意到其他一些此类问题 (1),(2),这让我很害怕。
因为这些问题缺乏非常基本的东西:一种感觉。

这个世界上的每一件事,不仅有它的成本,还有它的意义。
我想说,感觉是偏爱一件事而不是另一件事的主要原因。

说,有两种菜,一种是一堆,一种肮脏和肮脏,一种是干净、健康、有味道但更贵的一种。您是否总是只喜欢便宜的,只是因为它的成本?我怀疑。
步行是节省车费的好方法。无论距离、障碍和目的地如何,你总是走路吗? 成本是您考虑的唯一原因吗?我怀疑。
有时您会乘某些车辆旅行,只是因为在某些情况下它是更可靠的方式。所以,你选择我认为的东西,而不是成本。

这里也一样。
如果您的代码中有一些错误,这些错误应该是您关心的问题,而不是与性能相关的问题。 如果您的日志中充斥着浪费错误,掩盖了真正重要的错误,则必须关闭这些次要错误。不是因为系统的性能,而是因为程序员的性能,让他接触到了站点心跳。

事情的意义,意义应该是你关心的。不是抽象的“表现”。 有些语言显然比 PHP 更快,例如汇编语言。所以,只关心性能,你必须只使用汇编语言。但是您选择 PHP 是因为它的可靠性。所以,保持一致,根据他们的感觉选择事物,而不是想象的(!)表现。

当您询问代码结构时,您应该关注的是可靠的代码结构,而不是想象中的性能问题。这不是很明显吗?

【讨论】:

  • 通知确实会对性能产生影响,实际上——请参阅stackoverflow.com/questions/1868874/… 了解一些数字;-)
  • 当然,有错误,重要的是错误;但是,考虑到这个问题,“它会影响性能吗”...
  • 好奇心是我们学习的方式;-) (当然,我不同意您评论中的“代码未优化”部分)
  • @Col 除了性能,我们还需要关心什么。对于最终用户,他会期待更好的性能。如果我删除通知并且它对性能有好处。那有什么问题!!!!!!!!!
  • @Col 你的回答本身就是一个很大的错觉。你可以说那是错误的或那是正确的。但你说的是国王演讲
【解决方案2】:

这是否会影响系统性能。

是的。

但是你应该在使用它们之前声明所有变量和索引,因为下次你拼错变量名时,你会立即注意到错误,而不是在噪音中迷失。

您在跟踪这样一个愚蠢的错误时节省的时间可以用来编写一些重要的代码,例如可以节省更多时间的更优化的算法。

这种间接的“系统性能增益”比直接节省更有价值。

所以我声明并分配了一些变量,如果我不使用这些变量。这会影响性能吗?

未能声明您的变量不会改变您实际使用的数字!在适当的地方声明它们。将您的范围限制在手头的任务上,这样会很容易管理。

【讨论】:

    【解决方案3】:

    日志记录总是会导致一个小的开销,如果您可以通过很少的工作来避免不需要的错误日志记录,为什么不这样做呢?它不会显着影响系统性能,但恕我直言,通常不希望在日志空间中出现未定义变量的警告。

    如果你用这样的东西填满你的日志,真正的错误将更难发现。

    另一个疑问是,在某些情况下这些变量不会被使用。

    在您知道需要它们时立即声明它们。无需在脚本开头声明所有变量...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 2015-01-20
      • 2015-02-19
      • 2014-07-01
      相关资源
      最近更新 更多