Stack Overflow では、プロファイル ページに「最後に表示された」プロパティが一覧表示されます。これは、すべてのページ ビューで更新されるわけではないようです (明らかにパフォーマンス上の理由から)。トラフィックの多い Web アプリにどのように実装しますか? 特定のページだけ更新してくれませんか?または、ユーザーの最後の訪問を最後に記録した時間をキャッシュし、データベースを更新する前に特定の時間待機しますか? それともまったく違うもの?
4 に答える
Stack Overflow のようなトラフィックの多いサイトでは、ユーザーが実際に何かを行ったときにのみ、「最後に見た」変数を更新します。潜んで質問と回答を読むことは、システムによって「見られている」ユーザーとしてカウントされるべきではありません。質問と回答、またはそれらへの投票は、ユーザーが最後に表示されたときに更新されるアクションである必要があります。
実装の詳細については、他の回答で既にカバーされているため、説明しません (おそらく間違っているでしょう)。
おそらく、 「ユーザーの最近のアクティビティを追跡するためにどの戦略を使用しますか?」という質問が見つかるでしょう。役立つこと。問題は似ています。
私はSESSIONを使用します。そして、それをセッションの最初の訪問のみに設定します。また、人々がブラウザを開いたままにしておく場合に備えて、1時間ごとにリセットします。php では次のようになります。
if(!isset(!_SESSION['lastSeen'])){
$_SESSION['lastSeen'] = time();
updateLastSeenInDatabaseOrSomething();
}
else{
if($_SESSION['lastSeen'] < time() + 2 * 60 * 60){ //2 hours
$_SESSION['lastSeen'] = time();
updateLastSeenInDatabaseOrSomething();
}
}
そのようなものですが、OOを使用して同じことを2回行わないでください。
これには、「コマンド」設計パターンの使用を検討してください。これは 2 つの方法で役立ちます - 目の前の質問に答え、「元に戻す/やり直し」機能を実装します。そのパターンに従って設計されたコマンド オブジェクトのリストを維持する必要があります。