2017-04-14 10 views
0

ユーザーがMySQLデータベースに格納されているemberアプリケーションがあります。ユーザーが終了すると(つまり、ブラウザウィンドウを閉じる)、データベースからそれらを削除する必要があります。私は私のルートのいずれかのファイルに次のコードを持っている:私のテストではユーザーがウィンドウを閉じるときにEmber jsが実行される機能

setupController: function() { 
    $(window).on('beforeunload',() => { 
    this.get('currentUser').delete(); 
    }); 
    }, 

をそれかどうか、これが唯一多分、データベースからの時間の70%〜80%のユーザーを削除しているようだ、と何とかランダムのようです動作するかどうか。私は、ブラウザがウィンドウを閉じる前に関数が時間内に実行されないことがあるため、これを推測しています。ユーザーを削除するコードがユーザーが終了するたびに実行されるようにするにはどうすればよいですか?

+0

FWIWこれはChromeでうまくいく必要があります – ZhouW

答えて

1

このようには動作しません。理由:ユーザーがウィンドウ/タブを閉じると、ブラウザはバックエンドへのリクエスト(たとえajax)をも中断します。 バックエンド側でクリーンアップを実装することをお勧めします。あなたが必要とするのは、ユーザーが何らかのアクションを実行し、ある時間内にリクエストをしなかったユーザーを削除する最後の時間を保存することです(たとえば、1時間後にリクエストがなかった場合、ユーザーはブラウザウィンドウを閉じることができます) 。 Emberアプリからのバックエンドへの「ping」リクエストは、しばらくして実行することができるため、アイドル状態のユーザーは削除されません。

+0

私は5秒ごとに実行されるSQLクエリを作成し、updated_at ZhouW

+0

はい、あなたのケースで意図したとおりに動作しないため、削除できます。 –

関連する問題