ユーザーがインターネットから切断されているかどうかを検出する方法はありますか? 質問を投稿したいときにスタックオーバーフローが行う方法。それを行うためのアプローチは考えられませんでした。誰かがこの主題に光を当てることができますか?
2 に答える
Windowsが閉じているときに、AJAXリクエストをPHPスクリプトに送信できます。
window.onbeforeunload = function(){
// Request goes here
}
または、websocket-technology( phpDaemonを使用できます)を使用してサーバーに永続的に接続できるため、ユーザーがインターネットやサイトから切断されたとき、またはサーバーに定期的に(setInterval
関数を使用して)pingを実行したときにわかります。
Stack Overflow はAJAXを使用していると思います。これは、ブラウザ内のクライアント側で実行される JavaScript 駆動型プログラムです。この ajax セットアップは、たとえば、新しい回答が投稿されたときにユーザーに通知し、ページ全体をリロードせずにその新しい回答をロードする機会をユーザーに与える責任があります。
また、この構成には、サーバーとの通信でエラーを検出する方法があり、ユーザーが切断されていると解釈され、警告が発生します。
ただし、これには、ユーザーがまだブラウザを開いている必要があります。JavaScript と AJAX には、ユーザーがページを閉じるときに何かを実行するさまざまな関数もありますが、どちらも常に機能するとは見なされません。結局、特効薬はありません。
サーバー側からは、ユーザー クライアントの AJAX の絶え間ないピンポンを監視し、このピンポンが弱まりつつあるときに何かを実行できます。例: ユーザーは過去 2 分間、5 秒ごとに ping を送信してきましたが、現在、この ping は失われています。
これに関する主な問題は、PHP の原則の内部にあり、すべてのページは基本的に独立しています。リクエストが取得されると、ページが読み込まれて作成されますが、リクエストの最後に、他の場所 (Cookie、セッション、データベース) に保存されていないすべての変数が失われるのと同じように、現在のページ インスタンスの存在が拒否されます。