всем привет!
задача: надо получить список файлов с сервера (про сканировать каталог и подкаталоги)
хочу сделать что бы сканирование шло параллельно (запустить несколько раз один и тот же скрипт)
файлов 450тыс.
создал массив с промежутками по 10тыс.
scans[]= {scan:1, begin:0, end:10000}
пытаюсь отправить эти данные через AJAX скрипту на сервере
var i = 0;
/* тут заполнение массива*/
for (; i !== scans.length; ++i) {
console.log("running scan=" + i);
startProgress(scans[i]);
}
function create_ajax() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
var names = [
"Msxml2.XMLHTTP.6.0",
"Msxml2.XMLHTTP.3.0",
"Msxml2.XMLHTTP",
"Microsoft.XMLHTTP"
];
for (var i in names)
{
try {
return new ActiveXObject(names[i]);
} catch (e) {
}
}
alert("Browser not compatible ...");
}
var arrayScans = [];
function startProgress(params) {
var xhr_object = null;
if (typeof params === "undefined" || typeof params.scan === "undefined") {
xhr_object = create_ajax();
} else {
if (typeof arrayScans[params.scan] === "undefined") {
arrayScans[params.scan] = create_ajax();
console.log("fork(" + params.scan + ") is RUN");
}
xhr_object = arrayScans[params.scan];
}
if (xhr_object === null)
return;
if (xhr_object.readyState > 0 && xhr_object.readyState < 4) {
return;
}
var data = '';
for (var key in params) {
data += key + '=';
if (typeof params[key] === "array" || typeof params[key] === "object") {
data += JSON.stringify(params[key]);
} else {
data += params[key];
}
data += '&';
}
data = data.substr(0, data.length - 1);
xhr_object.open("POST", "scaner.php", true);
xhr_object.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
xhr_object.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr_object.onreadystatechange = function () {
switch (xhr_object.readyState) {
case 0:
console.log("uninitialized");
break;
case 1:
console.log("loading ...");
break;
case 2:
console.log("loaded");
break;
case 3:
console.log("interactive");
break;
case 4:
console.log("complete");
if (xhr_object.status == 200) {
parseResponse(xhr_object.responseText);
} else {
console.log("Error " + xhr_object.status);
}
break;
}
}
xhr_object.send(data);
}
не могу понять почему 3/4 запросов возвращают данные, а остальные 1/4 возвращаются с ошибкой 503?
что я делаю не так?
не правильно создаю и запускаю xhr объекты?
P.S. в серверной части есть контроль переработки скрипта по времени, т.е. он не будет работать дальше чем установлено в php.ini, даже меньше секунд на 5-7