【问题标题】:How can my PHP script tell whether the server is busy?我的 PHP 脚本如何判断服务器是否繁忙?
【发布时间】:2009-03-10 20:58:00
【问题描述】:

我想运行一个占用大量 CPU 和 Mysql 资源的 cron 作业来进行清理。我希望它仅在服务器不太忙时运行。

从 PHP 中确定它的最简单方法是什么? (例如,是否有一个查询返回最后一分钟完成了多少个查询?...)

【问题讨论】:

    标签: php mysql load


    【解决方案1】:
    if (function_exists('sys_getloadavg')) {
        $load = sys_getloadavg();
        if ($load[0] > 80) {
           header('HTTP/1.1 503 Too busy, try again later');
           die('Server too busy. Please try again later.');
        }
    }
    

    尝试根据您的需要更新此功能

    【讨论】:

    • 注意:仅适用于 PHP 5.1.3 或更新版本,不适用于 Windows。
    • 谢谢,乍得·伯奇。只是忘记了这一点:)从未见过win时“重载”的生产服务器:)
    • @Chad 与 PHP
    【解决方案2】:

    如果这是 Unix 系统,则解析 uptime 的输出。这显示了 CPU 负载,这通常被认为是衡量“忙碌”的好方法。任何接近或超过1.0 的东西都意味着“完全忙”。

    该输出中有三个 CPU“加载”时间,给出了 1、5 和 15 分钟的平均负载。选择对您的脚本有意义的。 “负载”的定义is here

    【讨论】:

      【解决方案3】:

      在 Linux 上,您可以从 /proc/loadavg 文件中获取负载。

      $load = split(' ',file_get_contents('/proc/loadavg'))
      $loadAvg = $load[0]
      

      【讨论】:

        【解决方案4】:

        您可能可以使用Mysql List Processes 函数中的信息来查看有多少是活动的还是睡眠的,这是关于数据库负载的一个不错的指标。

        如果您使用的是 Linux,则可以使用 Sys GetLoadAvg 函数查看整体系统负载。

        【讨论】:

          猜你喜欢
          • 2012-06-05
          • 2021-06-23
          • 2010-10-19
          • 1970-01-01
          • 2012-02-26
          • 2015-04-15
          • 1970-01-01
          • 2018-08-22
          • 2013-03-28
          相关资源
          最近更新 更多