Так что сейчас я продолжительные отправками XMLHttpRequests с GET на PHP скрипт, который дает мне обратно количество файлов в папке.Как продолжительную проверить, сколько файлов в папке с AJAX и PHP
Я повторил функцию javascript с помощью setInterval()
, и он работает очень хорошо, но я хочу, чтобы setInteral()
остановился, как только я вернусь к определенному числу из своего PHP-скрипта.
Вот мой код:
<script>
function checkmedia(url,format) {
var format1 = format;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
progress = this.responseText;
document.getElementById("progress").innerHTML =
this.responseText;
}
};
xhttp.open("GET", 'checkfilecount.php?userurl='+url+'&act=run&format-option=' + format, true);
xhttp.send();
if(progress != "100") {
var media_progress = setInterval(checkmedia.bind(null,url,format1), 10000);
}
}
</script>
Как я называю это XMLHttpRequest продолжительным и несколько раз (за стол) я получаю утечку памяти.
Любой вид помощи приветствуется. Благодарю.
Я думаю, что это лучший подход, потому что 'setInterval' не будет ждать предыдущего экземпляра, чтобы завершить обработку, если она занимает слишком много времени, и мы могли бы иметь несколько экземпляров работает, вызывая утечку памяти снова. Это вероятный сценарий? –
@BlazeSahlzen - Ну, очевидно, 'SetTimeout()' версия гарантирует максимум один АЯКС вызова в то время, так что я предполагаю, что это безопаснее, хотя я просто понял, что я упростил немного, потому что надо было, потому что надо было поставить 'if' в обработчике' onreadstatechange' (что я сделаю сейчас), а также я должен был разрешить ajax-ошибки (которые я не могу беспокоить). По крайней мере, 'setInterval()' будет продолжать опрос, даже если возникают ошибки. – nnnnnn
Я использовал код в этом ответе, и он отлично работает! Спасибо. Тем не менее, оба ответа были очень полезными, и я многому научился у них обоих. Спасибо – userlip