exec機能を使用すると、私は外部プログラムを実行できます。phpを使用して特定のIPでのHTTPプロセスの総数を調べる方法は?
次のコードを使用して、HTTPプロセスの総数を取得しました。
$count = exec("ps -ef | grep http | wc -l");
これが私の質問です。特定のIPからHTTPプロセスの総数を取得するにはどうすればよいですか?
ありがとうございます。
exec機能を使用すると、私は外部プログラムを実行できます。phpを使用して特定のIPでのHTTPプロセスの総数を調べる方法は?
次のコードを使用して、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により、すべての接続をフィルタ処理したいとしましょう:伝統的に、1つの接続は1つのプロセスごとによって処理されているように今、実際のプロセスへの接続をマッピング
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
は便利な1行のものをリストアップしていることがわかりますので、私たちはこれらを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)
));
は答えてくれてありがとう、しかし、それはゼロを示しています。カウントは常にゼロです。 –
申し訳ありませんが、最後の2つの例の 'p'パラメータがありません。 – DaSourcerer
コードを更新してください。 –