【发布时间】:2008-09-15 23:06:45
【问题描述】:
在 php 中,如何获取当前可用的 apache 子节点的数量
(apache 记分板中的status = SERVER_READY)?
我真的希望有一种简单的方法可以在我缺少的 php 中执行此操作。
【问题讨论】:
在 php 中,如何获取当前可用的 apache 子节点的数量
(apache 记分板中的status = SERVER_READY)?
我真的希望有一种简单的方法可以在我缺少的 php 中执行此操作。
【问题讨论】:
您可以执行ps aux | grep httpd 或ps aux | grep apache 的shell 命令并计算输出中的行数。
exec('ps aux | grep apache', $output);
$processes = count($output);
我不确定状态列中的哪个状态表明它已准备好接受连接,但您可以对其进行过滤以获得就绪进程的计数。
【讨论】:
如果您有权访问 Apache 服务器状态页面,请尝试使用 ?auto 标志:
http://yourserver/server-status?auto
输出是状态页的机器可读版本。我相信您正在寻找“IdleWorkers”。这里有一些简单的 PHP5 代码可以帮助您入门。在现实生活中,您可能希望使用 cURL 或套接字连接来启动超时,以防服务器离线。
<?php
$status = file('http://yourserver/server-status?auto');
foreach ($status as $line) {
if (substr($line, 0, 10) == 'IdleWorkers') {
$idle_workers = trim(substr($line, 12));
print $idle_workers;
break;
}
}
?>
【讨论】: