【发布时间】:2009-03-10 20:58:00
【问题描述】:
我想运行一个占用大量 CPU 和 Mysql 资源的 cron 作业来进行清理。我希望它仅在服务器不太忙时运行。
从 PHP 中确定它的最简单方法是什么? (例如,是否有一个查询返回最后一分钟完成了多少个查询?...)
【问题讨论】:
我想运行一个占用大量 CPU 和 Mysql 资源的 cron 作业来进行清理。我希望它仅在服务器不太忙时运行。
从 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.');
}
}
尝试根据您的需要更新此功能
【讨论】:
如果这是 Unix 系统,则解析 uptime 的输出。这显示了 CPU 负载,这通常被认为是衡量“忙碌”的好方法。任何接近或超过1.0 的东西都意味着“完全忙”。
该输出中有三个 CPU“加载”时间,给出了 1、5 和 15 分钟的平均负载。选择对您的脚本有意义的。 “负载”的定义is here。
【讨论】:
在 Linux 上,您可以从 /proc/loadavg 文件中获取负载。
$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]
【讨论】:
您可能可以使用Mysql List Processes 函数中的信息来查看有多少是活动的还是睡眠的,这是关于数据库负载的一个不错的指标。
如果您使用的是 Linux,则可以使用 Sys GetLoadAvg 函数查看整体系统负载。
【讨论】: