8

我想运行一个需要大量 CPU 和 Mysql 资源的清理工作。我希望它仅在服务器不是相对繁忙的情况下运行。

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

4

4 回答 4

12
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.');
    }
}

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

于 2009-03-10T21:05:23.127 回答
4

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

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

于 2009-03-10T21:01:45.927 回答
4

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

$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]
于 2009-03-10T21:12:39.380 回答
2

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

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

于 2009-03-10T21:07:07.507 回答