题
我想运行一个执行清理的cron作业,它占用了大量的CPU和Mysql资源。我希望它只在服务器不是比较繁忙时运行。
从PHP确定这一点的最简单方法是什么? (例如,是否有一个查询返回在最后一分钟完成了多少次查询?...)
解决方案
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.');
}
}
尝试根据需要更新此功能
其他提示
在Linux上,您可以从 / proc / loadavg
文件加载。
$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]
如果这是Unix系统,则解析 uptime
的输出。这显示了CPU负载,其通常被认为是“忙”的良好度量。任何接近或超过 1.0
的东西都意味着“完全忙碌。”
有三个CPU“负载”在该输出中的时间给出平均超过1,5和15分钟的负载。选择适合您脚本的选项。 “负载”的定义在这里
您可以使用 Mysql列表流程中的信息功能可以查看有多少活动与睡眠,这是关于数据库负载的一个不错的指标。
如果您使用的是Linux,则可以使用 Sys GetLoadAvg 功能查看整体系统负载
不隶属于 StackOverflow