2

ユーザーがインターネットから切断されているかどうかを検出する方法はありますか? 質問を投稿したいときにスタックオーバーフローが行う方法。それを行うためのアプローチは考えられませんでした。誰かがこの主題に光を当てることができますか?

4

2 に答える 2

5

Windowsが閉じているときに、AJAXリクエストをPHPスクリプトに送信できます。

window.onbeforeunload = function(){
    // Request goes here
}

または、websocket-technology( phpDaemonを使用できます)を使用してサーバーに永続的に接続できるため、ユーザーがインターネットやサイトから切断されたとき、またはサーバーに定期的に(setInterval関数を使用して)pingを実行したときにわかります。

于 2012-08-08T12:15:34.757 に答える
3

Stack Overflow はAJAXを使用していると思います。これは、ブラウザ内のクライアント側で実行される JavaScript 駆動型プログラムです。この ajax セットアップは、たとえば、新しい回答が投稿されたときにユーザーに通知し、ページ全体をリロードせずにその新しい回答をロードする機会をユーザーに与える責任があります。

また、この構成には、サーバーとの通信でエラーを検出する方法があり、ユーザーが切断されていると解釈され、警告が発生します。

ただし、これには、ユーザーがまだブラウザを開いている必要があります。JavaScript と AJAX には、ユーザーがページを閉じるときに何かを実行するさまざまな関数もありますが、どちらも常に機能するとは見なされません。結局、特効薬はありません。

サーバー側からは、ユーザー クライアントの AJAX の絶え間ないピンポンを監視し、このピンポンが弱まりつつあるときに何かを実行できます。例: ユーザーは過去 2 分間、5 秒ごとに ping を送信してきましたが、現在、この ping は失われています。

これに関する主な問題は、PHP の原則の内部にあり、すべてのページは基本的に独立しています。リクエストが取得されると、ページが読み込まれて作成されますが、リクエストの最後に、他の場所 (Cookie、セッション、データベース) に保存されていないすべての変数が失われるのと同じように、現在のページ インスタンスの存在が拒否されます。

于 2012-08-08T12:18:02.400 に答える