Hi,
ich bastele an einem Script, dass per cURL wiederholt eine Schnitstelle anspricht, die zurückgegebene xml parsed und am Ende die relevanten erhaltenen Daten in eine Datei schreibt.
Ich entwickele und teste lokal auf einer Windows 7 Maschine mit xampp, hier läuft das Script einwandfrei durch und vermeldet Erfolg. Schiebe ich es nun allerdings auf den Server auf dem es letztendlich laufen soll (Debian) läd sich der Browser tot. Ich schreibe auch ein Logfile, welches mir bestätigt, dass das Script weiterhin bis zum Ende durchläuft, allerdings bekommt der Browser nichts davon mit, er behauptet steif und fest weiterhin zu laden. Selbst mit die() ist dies dem Browser ab einem gewissen Punkt nicht mehr abzugewöhnen.
Hier mein Script (reduziert auf das relevante):
Das Script loggt mir auch brav raus wie es alle nötigen querys absetzt, schreibt die Daten und schreibt auch done ins Logfile, aber der Browser läd weiter. Wenn ich versuche mit die() zu beenden funktioniert das anfangs auch, wie oben in den Kommentaren angegeben, allerdings zu späteren Zeitpunkten im Script beendet das die() zwar das script (entsprechende Log-Einträge werden nicht mehr geschrieben) aber nicht das Laden des Browsers.
Hat jemand eine Idee was hier dazu führen könnte, dass der Browser nicht informiert wird? Ich habs mit Firefox und Chrome getestet, in beiden das gleiche verhalten. Da es lokal im xampp läuft, gibt es bekannte Unterschiede im verhalten zu einem Apache unter Debian? Der einzige mir bisher bekannte Unterschied ist dass der xampp bei Dateipfaden caseinsensitiv ist, aber ich öffne neue Dateien um Daten und Logfile zu schreiben, hier kann das Problem also nicht liegen.
ich bastele an einem Script, dass per cURL wiederholt eine Schnitstelle anspricht, die zurückgegebene xml parsed und am Ende die relevanten erhaltenen Daten in eine Datei schreibt.
Ich entwickele und teste lokal auf einer Windows 7 Maschine mit xampp, hier läuft das Script einwandfrei durch und vermeldet Erfolg. Schiebe ich es nun allerdings auf den Server auf dem es letztendlich laufen soll (Debian) läd sich der Browser tot. Ich schreibe auch ein Logfile, welches mir bestätigt, dass das Script weiterhin bis zum Ende durchläuft, allerdings bekommt der Browser nichts davon mit, er behauptet steif und fest weiterhin zu laden. Selbst mit die() ist dies dem Browser ab einem gewissen Punkt nicht mehr abzugewöhnen.
Hier mein Script (reduziert auf das relevante):
PHP-Code:
ini_set('max_execution_time', 18000); //die angesprochene Schnitstelle ist sehr langsam
$log_file = fopen('./logfile', 'w');
fwrite($log_file, date('H:i:s')." - Logfile start\r\n ");
fflush($log_file);
connect_cURL();
do {
fwrite($log_file, date('H:i:s')." - send off next query\r\n");
fflush($log_file);
$has_more = fetchNextDataSet();
//die("so we can halt here...."); //wenn ich hier ein die mache hält der Browser noch an
//Daten verarbeiten, zur Zeit komplett auskommentiert, der Fehler tritt weiterhinauf
} while ($has_more);
//die("but we can't halt here"); //ein die() hier beendet zwar das Script, aber der Browser bekommt es nicht mehr mit
disconnect_cURL();
fwrite($log_file, date('H:i:s')." - finished loop, write to file\r\n");
fflush($log_file);
//daten in datei schreiben
fwrite($log_file, date('H:i:s')." - done\r\n");
fflush($log_file);
fclose($log_file);
Hat jemand eine Idee was hier dazu führen könnte, dass der Browser nicht informiert wird? Ich habs mit Firefox und Chrome getestet, in beiden das gleiche verhalten. Da es lokal im xampp läuft, gibt es bekannte Unterschiede im verhalten zu einem Apache unter Debian? Der einzige mir bisher bekannte Unterschied ist dass der xampp bei Dateipfaden caseinsensitiv ist, aber ich öffne neue Dateien um Daten und Logfile zu schreiben, hier kann das Problem also nicht liegen.
Kommentar