この問題に取り組むには多くの方法があります。正確で再利用可能なアプローチの 1 つは、JavaScript を使用してページで費やされた時間を追跡し、ユーザーがプロセスを続行するたびにその時間をデータベース エントリに保存することです。後続のセッションごとに、費やされた時間を再びカウントし始め、それを以前に保存した既存の費やされた時間に追加します。例えば:
ユーザー John がログインし、ページ A で 2 分間開始します。彼はページ B に進み、そこで 1 分間過ごした後、ログアウトします。ログアウトするときに、バックエンドに「ユーザー John がプロセスに 3 分費やしました」と伝え、ユーザー John に関連付けられたデータベース エントリに値を保存します。ジョンが次にログインすると、ページ B にさらに 2 分間費やし、ページ C を 4 分で終了します。完了したら (またはログアウト時に)、再度バックエンドに「ユーザー John がプロセスに 6 分費やしました」というリクエストを送信し、それを既存の値に追加します。
恥知らずなプラグインとして、ユーザーが費やした時間を追跡できるようにまとめた JavaScript ライブラリを使用することをお勧めします。ユーザーが Web サイトと「実際に」対話している時間のみをカウントしようとし、ユーザーがアイドル状態になったり、タブを切り替えたり、別のアプリケーションに移動したりした時間はカウントしません。ここの GitHub にあります: https://github.com/jasonzissman、関連する StackOverflow の回答がここにあります:ページに費やされた時間を測定する方法は? .