Ich habe ein PHP-Skript geschrieben, welches via Cronjob regelmäßig aufgerufen wird (ein manueller Aufruf ist logischerweise auch möglich). Es wird eine CSV-Datei eingelesen und anschließend werden diese Werte in eine Datenbank geschrieben. Am Ende wird ausgegeben, wieviele Werte es waren.
Derzeit teste ich unter Windows und obwohl ich lange Zeit kein Update des installierten WAMP-Pakets ("Wampserver") installiert habe, hat sich das Verhalten des Skripts seit meinem letzten Test (vor wenigen Monaten) deutlich geändert. Getestet mit PHP 8.0.20 und gerade auch mit 8.0.26. Und zwar:
Es erfolgt sofort nach Aufruf der PHP-Datei die Meldung der importierten Datensätze, aber alles ist "0". Im Hintergrund läuft der MySQL- bzw. MariaDB-Server (Version 10.5.16) aber noch und trägt alles ein. Die Daten sind dann auch drin, aber das PHP-SKript ist offenbar schon lange beendet. Wie ist das möglich? Ich arbeite zwar mit einer Transaktion (
Hat jemand eine Idee, was hier das Problem sein kann? Der Code ist sehr umfangreich, daher poste ich den nicht. Ich könnte höchstens eine abgespeckte Version erstellen, aber da steht dann auch nicht mehr drin als ich hier geschrieben habe.
EDIT: Es scheint ein reines Firefox-Problem zu sein (in Chrome geht's), da bin ich zumindest zu 99% sicher. Also ist es evtl. ein Cache-Problem, wie schon 2011 mal jemand hier schrieb: stackoverflow.com/questions/83…omplete-before-proceeding
Ich denke, das Thema ist damit erledigt, auch wenn ich es sehr befremdlich finde, dass Firefox an dieser Stelle etwas cachet und direkt den Cache zurückgibt, obwohl die Ausführung des Skripts noch läuft. Da muss sich was bei einem der letzten FF-Updates geändert haben.
Derzeit teste ich unter Windows und obwohl ich lange Zeit kein Update des installierten WAMP-Pakets ("Wampserver") installiert habe, hat sich das Verhalten des Skripts seit meinem letzten Test (vor wenigen Monaten) deutlich geändert. Getestet mit PHP 8.0.20 und gerade auch mit 8.0.26. Und zwar:
Es erfolgt sofort nach Aufruf der PHP-Datei die Meldung der importierten Datensätze, aber alles ist "0". Im Hintergrund läuft der MySQL- bzw. MariaDB-Server (Version 10.5.16) aber noch und trägt alles ein. Die Daten sind dann auch drin, aber das PHP-SKript ist offenbar schon lange beendet. Wie ist das möglich? Ich arbeite zwar mit einer Transaktion (
begin_transaction()
und commit()
), aber trotzdem kann doch das Übermitteln der Werte nicht in 10 ms gehen, während der Datenbankserver nach PHP-Ausführung noch sekundenlang arbeitet. Und vor allem: Dieses Verhalten war nicht immer so. Das verwundert mich am meisten.Hat jemand eine Idee, was hier das Problem sein kann? Der Code ist sehr umfangreich, daher poste ich den nicht. Ich könnte höchstens eine abgespeckte Version erstellen, aber da steht dann auch nicht mehr drin als ich hier geschrieben habe.
EDIT: Es scheint ein reines Firefox-Problem zu sein (in Chrome geht's), da bin ich zumindest zu 99% sicher. Also ist es evtl. ein Cache-Problem, wie schon 2011 mal jemand hier schrieb: stackoverflow.com/questions/83…omplete-before-proceeding
Ich denke, das Thema ist damit erledigt, auch wenn ich es sehr befremdlich finde, dass Firefox an dieser Stelle etwas cachet und direkt den Cache zurückgibt, obwohl die Ausführung des Skripts noch läuft. Da muss sich was bei einem der letzten FF-Updates geändert haben.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()