MC-René
Erfahrenes Mitglied
Hallo!
Ich habe ein Programm lokal auf meinem PC welches bei Ereignis "X" eine php-Seite per WGET aufruft. Dort wird etwas in eine DB geschrieben...
Es kommt vor dass Ereignis X in 1 Sekunde 2 mal auftaucht. Also hab ich im Script überprüft ob der Eintrag von dem letzten Ereignis X bereits in der DB steht und nicht älter ist als 10 sekunden...
Kommt Ereignis X1 z.B. um 22:00:05 vor wird es in DB eingetragen, kommt Ereignis X2 um 22:00:06 vor wird das 2. Ereignis unterdrückt und nicht eingetragen. Das funktioniert auch!
Kommt nun aber Ereignis X1 um 22:00:05 vor und Ereignis 2 auch um 22:00:05 vor werden beide in die DB geschrieben...
Erklären würde ich mir selbst das so:
WGET ruft durch die 2 - nur um Bruchteil von sek. - aufeinanderfolgenden Ereignisse die PHP Seite auf und der PHP-Interpreter arbeitet diese parallel ab und die o.g. Prüfung auf doppeleintrag greift nicht!
Das steht m.e. zum Widerspruch dazu, dass ich irgendwo mal gelesen habe, dass PHP auf dem Server alle Anfragen nacheinander abarbeitet...
Kann mir dass jemand mal kurz erklären?
Wie kann ich das Problem lösen?
Noch ein Hinweis falls wichtig: Die Seite liegt auf Shared Webspace (kein Freehoster)
Ich habe ein Programm lokal auf meinem PC welches bei Ereignis "X" eine php-Seite per WGET aufruft. Dort wird etwas in eine DB geschrieben...
Es kommt vor dass Ereignis X in 1 Sekunde 2 mal auftaucht. Also hab ich im Script überprüft ob der Eintrag von dem letzten Ereignis X bereits in der DB steht und nicht älter ist als 10 sekunden...
PHP:
//Hinweis: zs_max=strtotime(- 10 seconds);
SELECT ID FROM tabelle WHERE Zeitstempel>'$zs_max' LIMIT 1
Kommt Ereignis X1 z.B. um 22:00:05 vor wird es in DB eingetragen, kommt Ereignis X2 um 22:00:06 vor wird das 2. Ereignis unterdrückt und nicht eingetragen. Das funktioniert auch!
Kommt nun aber Ereignis X1 um 22:00:05 vor und Ereignis 2 auch um 22:00:05 vor werden beide in die DB geschrieben...
Erklären würde ich mir selbst das so:
WGET ruft durch die 2 - nur um Bruchteil von sek. - aufeinanderfolgenden Ereignisse die PHP Seite auf und der PHP-Interpreter arbeitet diese parallel ab und die o.g. Prüfung auf doppeleintrag greift nicht!
Das steht m.e. zum Widerspruch dazu, dass ich irgendwo mal gelesen habe, dass PHP auf dem Server alle Anfragen nacheinander abarbeitet...
Kann mir dass jemand mal kurz erklären?
Wie kann ich das Problem lösen?
Noch ein Hinweis falls wichtig: Die Seite liegt auf Shared Webspace (kein Freehoster)