0

ユーザーが接続を失ったとき、または Web サイトからログアウトしたときに、mysql テーブル フィールドの値を「オフライン」に更新したいと考えています。出来ますか?はいの場合、どのように?

4

3 に答える 3

3

いいえ、できません。

フィールドを使用してに設定する代わりに、フィールドにする必要がonlineあります。ユーザーがWebサイトを操作するたびに、フィールドを現在のタイムスタンプ()で更新するだけです。このフィールドを使用すると、ユーザーがアクティブになってからの経過時間を確認することで、ユーザーのステータスを推測できます(たとえば、<= 30分がオンライン、> 30分がオフライン)。offlineINT$_SERVER['REQUEST_TIME']

于 2012-12-28T06:49:00.067 に答える
1

PHP セッションを使用すると、ここで役立ちます。ユーザーがログインするたびに、データベース フィールドの PHP の session_id() を更新します。PHP がセッション データを tmp フォルダーに保存することは周知とおりです。実行中のセッションの cron ジョブを使用して、このフォルダーをスキャンできます。通常、セッション ファイルは sess_session_id() のようになります。

アルゴリズムを以下に示します

  1. ユーザーログイン
  2. データベースのセッション値を更新する
  3. ログイン ステータスをオンラインとして更新する

1 分ごとに cron ジョブを実行し、不要な HTTP リクエストを作成する必要がないように CLI プログラムを記述します。この CLI プログラムは、セッション ID を含むテーブルをスキャンし、 tmpフォルダーで同じもの (sess_ で始まるセッション ID) を検索する必要があります。ファイルが存在する場合はユーザーがオンラインであることを意味し、ファイルが存在しない場合はユーザーがオフラインであることを意味します。

これが役立つことを願っています。

于 2012-12-28T07:49:45.267 に答える
1

まず、PHP セッションを使用して、一意のランダム ID をすべての訪問者に割り当てます。次に、この ID、ID が作成された時刻、および最後にオンラインで表示された時刻を含む DB 行を作成します。

次に、約 60 秒ごとに、jQuery の .load() を使用してサーバーから PHP スクリプトをロードし、mysql データベースの last_seen フィールドを更新します。ジョブ完了。

オーバーフローを回避するには、cron ジョブを作成するか、ランダムを使用して、X リクエストまたは X 分ごとにデータベースをクリーンアップします。

于 2012-12-28T06:47:12.307 に答える