PHP mysql, daten 3mal täglich schreiben, keine doppeleinträge?
Hallo zusammen
ich habe eine DB in welcher ich 3mal am tag einträge schreiben möchte. das script wird jedoch alle 1-2sek ausgeführt. Mein arduino schickt einen einfachen http request zum script.
Ich habe nun eine simple if formel geschrieben welche prüft, ob die uhrzeit 06:00, 12:00 oder 23:00 ist, falls dies der falls ist, soll das query durchgeführt werden.
Das problem:
Es ist 60 sekunden lang 12:00 uhr. Das script wird also mindestens 30mal ausgeführt.
Wenn ich nun in der ifformel die sekunden auch angebe, löst es manchmal nicht aus, da nicht exakt 06:00:59 erreicht wird.
Meine Lösung:
ich schreibe in die Zeile auch die uhrzeit, also bspw: 06:00 und setzte diese Spalte auf UNIQUE.
Das funktioniert super!!!
Aber: der arduino bekommt natürlich bei den 20-30 reqeusts, welche zwischen 06:00:01 und 06:00:59 liegen die antwort Warning: doppelter eintrag.
Ist dies schlecht, wenn diese MEldung immer wieder retour gegbene wird, oder kann ich sie mit gutem gewissen ignorieren, da sie ja gewollt ist?
Danke
4 Antworten
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Ich kenne mich mit Arduino nicht aus, aber es muss doch eine bessere Lösung geben als 30-60 identische Requests zu machen.
Z.B. könntest in einer Variable die Zeit des letzten (erfolgreichen) Requests speichern und vor jedem Request sicherstellen, dass der letzte Request mehr als eine Stunde her ist.
06:00:00 -> der letzte Request ist 7 Stunden her -> mache Request
06:00:01 -> der letzte Request ist nur eine Sekunde her -> überspringen
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Okay, eigentlich mag ich doch die erste Variante mehr, aber 2 Minuten reichen als Zeitpuffer.
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Das ist ja der Sinn bei unique, und dass eine Warnung ausgegeben wird auch. Du kannst ja einfach vorher überprüfen ob der Eintrag mit dem Zeitstempel schon vorhanden ist und wenn ja den Insert nicht ausführen.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Da .üsste ich ein extra fetch query ausführen, oder? Ich möchte es so Ressourcen sparend wie möglich halten. Das läuft auf einen kleinen odroid
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Resourcensparend? Man führt das alle 2 Sekunden aus, um 3x am Tag einen Eintrag zu erzeugen und will dann bei 0,2 % der aller Requests Resourcen spearen?
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Richte einen CRON-JOB ein, der 3 x täglich das Script ausführt.
![](https://images.gutefrage.net/media/user/NackterGerd/1459631419191_nmmslarge__4_21_414_414_4344501cccc644450d864209d1253d34.jpg?v=1459631419000)
Warum so umständlich.
Warum nicht einfach ein Flag setzten wenn der Aufruf Erfolg und dann weitere unterbinden bis der Timeslot beendet ist.
Oder vielleicht eine bessere Idee. Du setzt die Uhrzeit des nächsten Requests.
nächster Request: 6:00
6:00:00 -> es ist 6:00 und der nächste Request soll um 6:00 erfolgen -> mache Request, setze nächsten Request auf 12:00
6:00:01 -> es ist 6:00, aber der nächste Request soll um 12:00 sein -> überspringen
...
12:00:00 -> es ist 12:00 und der nächste Request soll um 12:00 erfolgen -> mache Request, setze nächsten Request auf 23:00