現在、私の Web ページには、30 秒ごとに関数を実行するタイマーがあります。
setInterval("someFunction(userId)", 30000);
これは問題なく機能しますが、問題は、何百人ものユーザーがブラウザーを開いたままにしておくと (たとえば、ランチに行くときなど)、システムがポーリングされ、理由もなくサーバーの負荷が増加することです。
20 分後にこのタイマーの実行を停止するにはどうすればよいですか?
現在、私の Web ページには、30 秒ごとに関数を実行するタイマーがあります。
setInterval("someFunction(userId)", 30000);
これは問題なく機能しますが、問題は、何百人ものユーザーがブラウザーを開いたままにしておくと (たとえば、ランチに行くときなど)、システムがポーリングされ、理由もなくサーバーの負荷が増加することです。
20 分後にこのタイマーの実行を停止するにはどうすればよいですか?
間隔をクリアするには、タイムアウトを 20 分に設定するだけです。
var interval = setInterval(function() {
someFunction(userId);
}, 30000);
setTimeout(function() {
clearInterval(interval);
}, 1000 * 60 * 20);
を呼び出すとsetInterval
、実行間隔へのハンドルである値が返されます。
したがって、解決策は、この間隔が実行されないようにする別の閉鎖をスケジュールすることです。
var interval = setInterval("someFunction(userId)", 30000);
setTimeout(function(){ clearInterval(interval) }, 20 * 60 * 1000);
間隔を変数として設定します。
別のタイマーを設定してその間隔をリセットするか、20 分後にポーリング スクリプトの無効フラグを設定します。
これを試して:
var intervalId= setInterval(function(){
someFunction(userId);
}, 30000);
setTimeout(function(){
clearInterval(intervalId);
},20*60*1000);
setInterval
clearInterval
後で渡すために使用できる intervalId を返します。