last_seen フィールドを持つデータベース名ユーザーが 1 人います。このフィールドを現在のタイム スタンプで 5 秒ごとに更新したいと考えています。
3 に答える
しないでください、しないでください。これは、任意の Javascript フレームワークで定期的な XHR コールバックを使用して簡単に実行できますが、これは、50 人のユーザーがサイトを開いている場合、1 秒あたり 10 のリクエストを実行することになり、ホスティング業者がシャットダウンすることを意味します。途方もないサーバー負荷を生成します。そうしないと、SQL データベースのロックが原因でサイトが途方もなく遅くなるか、すべてのリクエストでサイト全体がタイムアウトする可能性さえあります。
最後のページビューをログに記録し、他のコールバックがある場合はタイムスタンプを更新します。ユーザーが表示しているページに他のコールバックがない場合、ユーザーが表示していた情報はいずれにせよ堂々と古くなっているため、ユーザーがいつページを開いたのかを知る合理的な目的はありません。
このユーザーがアクティブであることを書き込む 5 秒ごとに AJAX 呼び出しを行うことができます。ただし、DB と Web サーバーに大量のトラフィックが追加されます。
それが内部アプリケーションであり、負荷がわかっている場合は問題ありません。また、たとえば 60 秒以内にリクエストがない場合、ディスクに書き込まれるある種のバッファで last_seen をメモリに att することもできます。
mysql イベントを試してください:
http://dev.mysql.com/doc/refman/5.1/en/create-event.html
CREATE EVENT myevent
ON SCHEDULE EVERY 5 SECOND
DO
UPDATE myschema.mytable SET mycol = mycol + 1;