PHP Laravel 5 - Zwei API Scripts dürfen nicht gleichzeitig laufen

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.721
Moin zusammen,

ich habe derzeit ein Problem, welches ich leider nicht zu lösen weiß. Ich habe eine Skript geschrieben, die sich alle Viertelstunde ein Produkt von einer API zieht und diesen mit dem Preis in der Datenbank speichert. Zusätzlich wird soll um 9 Uhr und 16 Uhr ein weiters Skript ausgeführt werden, welches alle Produkte in der Datenbank mit der API abgleicht, ob der Preis noch stimmt.

Das Problem dabei ist, dass ich nur ein API Aufruf alle 5 Sekunden frei habe und somit es natürlich um 9 Uhr und 16 Uhr zu einem Problem kommt, da ich sonst an diesen Uhrzeiten jeweils zwei API Aufrufe zur selben Zeit tätigen würde und ggf. sogar auch um 9:15 Uhr und 16:15 Uhr. Je nach dem wie groß die Datenbank wird, auch die API Aufrufe im weiteren 15 minütigen Takt...

Nun such ich für dieses Programm eine Lösung, welches dynamisch ist. Also je größer die Datenbank wird, desto länger braucht natürlich Skript B auch die Daten abzugleichen.

Die einzige Lösung die ich sehe, ist ein Skript welches sozusagen Rechte verteilt und dem Skript, welches alle 15 Minuten ein neues Produkt in die Datenbank schreibt "Sonderrechte" gibt und Skript B dann stoppt und nachdem ein Produkt in die DB geschrieben wurde von Skript A dann Skript B weiter ausführt.

Das ist mMn aus dem Grund die einzige Lösung, da Skript B, also welches immer wieder die Preise abchecken soll, immer länger benötigen wird und ich so weiterhin alle 15 Minuten ein Produkt in die Datenbank schreiben kann, was nur so 5-10 Sekunden dauert. Je nach dem, wie schnell ich ein passendes Produkt von der API bekomme, welches meinen Filter passen kann.

Nur wie schreibe ich sowas... Ich habe leider nicht mal einen theoretischen Ansatz, wie ich da vorgehen kann, da ich sowas noch nie geschrieben habe und das leider, trotz dessen dass ich mittlerweile PHP und Laravel echt sehr gut beherrsche.

Würde mich über Anregungen und eine Diskussion freuen :)

MfG und Vielen Dank!
 
Zurück
Oben