【问题标题】:Is CPU execution time different in Loop with Sleep() and Long Loops without sleep(), with both having the same total running time?使用 Sleep() 的 Loop 和没有 sleep() 的 Long Loops 中的 CPU 执行时间是否不同,两者的总运行时间相同?
【发布时间】:2010-03-08 17:06:23
【问题描述】:

我有一个循环运行大约。 25 分钟,即 1500 秒。 [100 循环与睡眠(15)]

循环内语句的执行时间非常短。

我的脚本托管在 GoDaddy 上。我确信他们对执行时间有某种限制。

我的问题是,他们关心的是“总 CPU 执行时间”还是总运行时间。

【问题讨论】:

    标签: php sql-server cpu-usage


    【解决方案1】:

    他们会关注 CPU 执行时间,而不是总运行时间,除非连接是一个问题并且您使用了很多(听起来不像您) .

    运行时间(如秒表)对于共享主机来说并不重要,如果您的循环运行 3 年但只使用 0.01% 的 CPU,则不会影响它们的托管能力。但是,如果您以 100% 的 CPU 运行 3 年,这将直接影响在同一硬件上可以运行多少其他应用程序/VM/任何东西。这将意味着更多的服务器来托管相同数量的人,这意味着金钱......他们关心。

    对于标题中的问题:它们非常不同。使用sleep() 和相同的总时间,这意味着 CPU 正在做的实际工作要少得多,因为它可以完成工作、睡眠/空闲,并且仍然在相同的时间内完成。当您调用 sleep() 时,您不会对 CPU 造成负担,这是一种非常低功耗的操作,可以让计时器继续运行直到再次调用您的代码。

    【讨论】:

      【解决方案2】:

      这是典型的时间限制:

      http://es2.php.net/manual/en/info.configuration.php#ini.max-execution-time

      通常可以使用 ini_set() 在每个脚本的基础上进行更改,例如:

      ini_set('max_execution_time', 20*60); // 20 minutes (in seconds)
      

      无论如何,确切的时间限制可能取决于 PHP 的运行方式(Apache 模块、fastCGI、CLI...)。

      【讨论】:

      • 我个人一直更喜欢set_time_limit() 函数。不知道是不是完全等同于调用ini_set()。我想我一直只是假设如果他们为它创建了一个函数,那么使用它可能会很好。
      猜你喜欢
      • 2021-06-19
      • 2014-05-04
      • 2017-08-17
      • 2020-05-05
      • 1970-01-01
      • 2019-01-03
      • 2016-09-23
      • 1970-01-01
      • 2014-04-03
      相关资源
      最近更新 更多