クライアント用のチャット スクリプトを実装しています。私が直面している問題は、ユーザーがログアウトした場合、ユーザーがログインするとステータスが1に設定されるため、チャットステータスをオフラインに終了するようにプログラムできることですが、ユーザーがブラウザを閉じるとどうなるかについて混乱していますログアウトせずに。この場合、ユーザーがログアウトしていないため、データベースのステータスは 1 のままです。
質問を理解してください。助けてください。
クライアント用のチャット スクリプトを実装しています。私が直面している問題は、ユーザーがログアウトした場合、ユーザーがログインするとステータスが1に設定されるため、チャットステータスをオフラインに終了するようにプログラムできることですが、ユーザーがブラウザを閉じるとどうなるかについて混乱していますログアウトせずに。この場合、ユーザーがログアウトしていないため、データベースのステータスは 1 のままです。
質問を理解してください。助けてください。
Cookie ベースのセッションを使用している場合は、タイムアウトを非常に積極的に設定してください。
http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime
また、JavaScript を介してブラウザーのアンロード イベントにフックし、セッションを破棄するサーバーへの迅速な AJAX 要求をトリガーすることもできます。
http://eureka.ykyuen.info/2011/02/22/jquery-javascript-capture-the-browser-or-tab-closed-event/
ただし、このクライアント側の実装には依存しません。ブラウザーがクラッシュしたり、ユーザーが強制的に閉じたりすると、イベントがトリガーされない可能性があります。ブラウザー自体もonunload
、ユーザーを考慮して、イベントが完了するまでの時間を制限する場合があります。この 2 つの方法を組み合わせると、おそらく最も効果的です。
セッション Cookie の有効期限が切れたとき、または非アクティブな状態が一定時間続いたときに、データベースでユーザーをオフラインに設定します。
これは、リクエストごとに確認できます。