大きなファイルをホストするサーバーがあり、ユーザーはそれを Web サイトからダウンロードできます。問題は、ユーザーがファイルをダウンロードしている間にユーザー アカウントを無効にしても、ブラウザーはダウンロードを完了してしまうことです。
私がやろうとしているのは次のことです:
1. Find the active process responsible for the current (download) connection
2. Kill the process - so that users browser fails to download the file.
最初のステップはどうすれば実現できますか? ファイル転送自体は Apache、PHP、または他の何かが担当しているのでしょうか? ここから先はどこに行けばいいのか全くわかりません。 ありがとうございます!
答え1
mod_status
少し前に似たような問題を扱いました。Apache は間違いなくダウンロードのリクエストを処理しています。Apache のモジュールから始めます。 と を一緒に調べるtop
と、ps
プロセスを見つけることができるかもしれません。
mod_statusモジュールをオンにすると、ページにアクセスしてhttp://your.server.name/server-status
あらゆる種類の統計情報を取得できます。ドキュメントを参照。
これはドキュメントからの抜粋です:
[もし] どのリクエストまたはクライアントが問題を引き起こしているかを特定したい場合...まず、ExtendedStatus がオンになっていることを確認して、各子またはスレッドの完全なリクエストとクライアント情報を表示できるようにします...次に、プロセス リスト (top または同様のプロセス表示ユーティリティを使用) を調べて、主な原因となっている特定のプロセスを特定します。