私のロードバランサは 60 秒後にアイドル状態の接続を閉じ、実行に 60 秒以上かかることがありますdownload_files.php
。
この問題を回避するには、45 秒ごとにハートビートを送信して、接続がアクティブな状態を維持するようにします。
var heartbeatTimer = 0;
heartbeatTimer = setInterval(function () {
var heartbeatXhr = new XMLHttpRequest();
heartbeatXhr.open('GET', 'heartbeat.php', true);
heartbeatXhr.send();
}, 45*1000);
$.ajax({
url: "download_files.php"
});
clearInterval(heartbeatTimer);
download_files.php
問題は、すべてのハートビートが 45 秒ごとに開始されますが、スクリプトが完了するまで終了しないことです。
ハートビートのリクエストが行われた直後にハートビートが終了するようにするにはどうすればよいですか (私は mod_php を使用しています)。
また、最初のハートビートが 45 秒後に開始されるようにするにはどうすればよいですか? 上記の例では、0 秒から開始されます。たとえば、実行に 30 秒かかる場合download_files.php
、ハートビートが一度も実行されないようにします。