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

标签 php http command ip

使用 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

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

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

您会发现 ss 将这些方便地列在一行中,因此我们可以将它们 grep 出来并计算唯一性:

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)
));

关于php - 如何使用 php 查找特定 IP 中的 HTTP 进程总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36444835/

相关文章:

php - 为什么我应该在付款请求后放置 sleep 功能以获取 Paypal 交易 ID?

php - 自定义电话验证器不工作 symfony

node.js - HTTP 到 HTTPS 重定向——Nginx 与 Node Express

iPhone/iPad HTTP 流媒体库或服务器

用于显示用于引导/根分区的文件系统名称的 Linux 命令

php - Codeigniter 预订模块

java - 是否有用于 Java 的 HttpCahce 客户端库?

Mercurial - 获取最近更改集中更改的文件列表

c# - 如何将变量作为 CommandParameter 传递

php - 调用父类方法