ciao ragazzi ho un problema:

ho dovuto modificare un programma estraendo delle informazioni da esso poi le ho inviate attraverso l'oggetto xmlhttprequest ad un file php che li riceve e li scrive in un file.
Il problema è che talvolta non vengono scritti nell'esatta maniera in cui sono stati estratti, ossia talvolta il file 5 viene prima del 4.
Il motivo non so spiegarmelo, pensavo fosse dovuto al fatto che la scrittura avviene in tempi ravvicinati e quindi durante le varie operazioni possono accavallarsi e causare queste situazioni.
Per questo motivo cercavo un modo per evitarlo, qualcuno può suggerirmelo?
Penso che il problema risieda nella funzione in javascript che invia i dati perchè secondo me il ciclo avviene troppo velocemente e i dati vengono inviati quasi in simultanea quindi quando vengono processati dagli script php talvolta "si superano" perchè magari ci sono meno informazioni da scrivere.
Almeno questa è la mia idea, tra l'altro ho notato che inserendo un alert nel ciclo, quest'ultimo funziona perfettamente.

per completezza metto parte del codice, ho inserito la parte di php nel rispettivo forum :

dal file .js:

createXHR: function(inviodati) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", inviodati, true);
xmlHttp.send(null);
xmlHttp.close;

}
try {
for (var j = 0; j < length; ++j) {


var file = context.netProgress.files[j];
if (panel.getCategory(file) == "category-html" || panel.getCategory(file) == "category-xhr") {
href = panel.getHref(file);
domain = panel.getDomain(file);
size = panel.getSize(file);

var date = this.now();

timeElapsed = panel.formatTime(file.endTime - file.startTime);
if (panel.hasResponseHeaders(file)) {
responseHeaders = this.HeadersReturner(file.responseHeaders);
requestHeaders = this.HeadersReturner(file.requestHeaders);

if (panel.getCategory(file) == "category-xhr")
xhrRootPage = this.rootPageAjaxed(file.requestHeaders);
}
inviodati = page +
"?date=" +
escape(date) +
"&href=" +
escape(href) +
"&domain=" +
escape(domain) +
"&size=" +
escape(size) +
"&timeElapsed=" +
escape(timeElapsed) +
"&responseHeaders=" +
escape(responseHeaders) +
"&requestHeaders=" +
escape(requestHeaders) +
"&xhrRootPage=" +
escape(xhrRootPage);


this.createXHR(inviodati);




}

}

}
catch (e) {
alert(e);
}