如何使用php查找特定IP中的HTTP进程总数


How to find total number of HTTP processes in a specific IP by using php?

使用exec函数,我可以执行外部程序。

我使用以下代码得到了HTTP进程的总数。

$count = exec("ps -ef | grep http | wc -l");

现在,这是我的问题。如何从特定IP获取HTTP进程的总数?

谢谢。

我假设您在linux系统上。您可以通过ss实用程序检索套接字统计信息。例如,为了列出到http或https端口的所有连接,您可以使用:

ss -t '( sport = :http or sport = :https )'

您可以通过IP对此进行进一步筛选。假设您想通过远程地址1.2.3.4.过滤所有连接

ss -t '( sport = :http or sport = :https )' dst 1.2.3.4

现在,将连接映射到实际进程有点棘手,因为传统上,每个进程处理一个连接。但事实并非总是如此。您可以让ssp开关显示收听节目,如下所示:

ss -tp '( sport = :http or sport = :https )' dst 1.2.3.4

你会发现ss很方便地在一行中列出了这些,所以我们可以把它们放出来并计算出唯一性:

ss -tp '( sport = :http or sport = :https )' dst 1.2.3.4 | grep users | sort | uniq | wc -l

把这些放在一起:

$count = exec(sprintf(
    'ss -tp "( sport = :http or sport = :https )" dst %s | grep users | sort | uniq | wc -l',
    escapeshellarg($remoteAddress)
));