我想运行一个执行清理的cron作业,它占用了大量的CPU和Mysql资源。我希望它只在服务器不是比较繁忙时运行。
从PHP确定这一点的最简单方法是什么? (例如,是否有一个查询返回在最后一分钟完成了多少次查询?...)
答案 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功能查看整体系统负载。