彼がアプリケーションに接続しているときに、データベースに 2 ~ 5 秒ごとに ping を実行するシステムを取得しました。彼の接続に応じて、ping の時間枠は 10 秒ほど長くなる場合があります。
例:
Pings: 1,4,6,8,9,12,16,20,50,180,187,189,200,203,206,210 ...
クエリを実行して、ping 間の 1 分を超えない範囲を取得し、それらをグループ化して、ユーザーが接続されている時間を確認し、次のような新しいテーブルに保存します。
Connections table:
user: X | start_date: 1 | end_date: 50 | duration: 49
user: X | start_date: 180 | end_date: 210 | duration: 30
,50,180, ... からの ping が 1 分を超えたため、クエリ グループによって考慮されませんでした。
ping はタイムスタンプとして保存されるため、簡単に日付に変換できます。また、最後の ping から最初の ping までの範囲からセッションの継続時間がわかります。
とにかくMySQLクエリでそれを行うことはありますか? 何か助けはありますか?
編集: ping 履歴スキーマの追加
id int(11)
user_id int(11)
ping_timestamp int(11)
ありがとう、