3

在 php 中,如何获取当前可用的 apache 子项的数量
status = SERVER_READY在 apache 记分板中)?

我真的希望有一种简单的方法可以在我缺少的 php 中执行此操作。

4

2 回答 2

2

您可以执行ps aux | grep httpdor的 shell 命令ps aux | grep apache并计算输出中的行数。

exec('ps aux | grep apache', $output);
$processes = count($output);

我不确定状态列中的哪个状态表明它已准备好接受连接,但您可以对其进行过滤以获得就绪进程的计数。

于 2008-09-15T23:08:08.180 回答
1

如果您有权访问 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;
  }
}

?>
于 2008-09-15T23:39:22.253 回答