我的PHP脚本如何判断服务器是否正忙?

时间:2009-03-10 20:58:01

标签: php mysql load

我想运行一个执行清理的cron作业,它占用了大量的CPU和Mysql资源。我希望它只在服务器不是比较繁忙时运行。

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

4 个答案:

答案 0 :(得分: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.');
    }
}

尝试根据需要更新此功能

答案 1 :(得分:4)

在Linux上,您可以从/proc/loadavg文件加载。

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

答案 2 :(得分:3)

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

在该输出中有三个CPU“加载”时间,使得平均负载超过1,5和15分钟。选择适合您脚本的选项。 “load”is here的定义。

答案 3 :(得分:2)

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

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