Ciao a tutti, premettendo che sono un neofita di php, qualcuno mi saprebbe spiegare una maniera per far scrivere un file in maniera sequenziale evitando che scrivendo in parallelo si perda la consequenzialità dei dati?
Per intenderci io 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?
per completezza metto parte del codice:
dal file .js:
createXHR: function(inviodati) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", inviodati, true);
xmlHttp.send(null);
xmlHttp.close;
}
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);
dal file php:
<?php
$date;
$href;
$domain;
$size;
$timeElapsed;
$responseHeaders;
$requestHeaders;
$xhrRootPage;
if ((isset($_GET['date']))and(isset($_GET['href']))and(isset($_GET['domain']))and
(isset($_GET['size']))and(isset($_GET['timeElapsed']))and
(isset($_GET['responseHeaders']))and(isset($_GET['requestHeaders']))and(isset($_GET['xhrRootPage'])))
{
$date = $_GET['date'];
$href = $_GET['href'];
$domain = $_GET['domain'];
$size = $_GET['size'];
$timeElapsed = $_GET['timeElapsed'];
$responseHeaders = $_GET['responseHeaders'];
$requestHeaders = $_GET['requestHeaders'];
$xhrRootPage = $_GET['xhrRootPage'];
};
?>
<?php
$file;
include 'ricdati.php';
$file = fopen("NetFirebugExtensionLOG.rtf", "a+");
if (!$file)
{
echo "
Impossibile aprire il file remoto in scrittura.\n";
exit;
}
/* Scrive i dati qui. */
fputs ($file, $date." ".$href." ".$domain."\ndimensione: ".$size."\ntempo di caricamento: ".$timeElapsed."\nRootPage: ".$xhrRootPage);
fputs ($file, "\nHeaders di risposta:"."\n".$responseHeaders);
fputs ($file, "\nHeaders di richiesta:"."\n".$requestHeaders."\n");
fputs ($file, " - - - - - - - - - - - "."\n");
fclose ($file);