Hallo!
Derzeit macht mir eine Applikation sorgen, da diese sich immer mehr in Richtung Laufzeitüberscheitung entwickelt. Natürlich ist die erste Maßnahme eine oder sogar mehrere Codeoptimierungen, was zwar Erfolg zeigte, die Datenmenge aber so schnell wächst, dass mich das Problem sehr schnell einholt.
Kern des Problems ist eine regelmäßige Überprüfung aller Datensätze auf neue Bedingungen, die täglich eingespielt werden. So müssen dann relativ viele Datensätze gegen eben diese Bedingungen geprüft werden.
Zum einen wird dazu ein Cronjob ausgeführt und zum anderen wird nach bestimmten Benutzeraktionen der Prozess der Prüfung angestoßen, da die Überprüfung nach Benutzerinteraktion relativ zeitnah erfolgen muss.
Trotz Optimierung und vielen Versuchen die Laufzeit zu drücken bin ich immer ratloser, wie man diesem Problem sinnvoll begegnen kann. Derzeit sind durchschnittliche Laufzeiten um die 65 Sekunden noch unproblematisch, aber dennoch kritisch. Wenn die Datenmenge weiter so skaliert, ist ein Ende relativ schnell abzusehen. Ich möchte keine Lösungen, die es möglich machen, Endlosschleifen laufen zu lassen.
Wie kann man diesem Problem begegnen? Teilung des Prozesses in kleinere Arbeitspakete? Wie lässt sich so etwas abbilden?
Und sehr spannend für mich: Wie kann man während der Laufzeit auf eine Überschreitung der Laufzeit reagieren? Kann man so etwas überhaupt auf der PHP Ebene abfangen und rechtzeitig vom dem Abbruch darauf reagieren?
Viele Grüße
ec
Derzeit macht mir eine Applikation sorgen, da diese sich immer mehr in Richtung Laufzeitüberscheitung entwickelt. Natürlich ist die erste Maßnahme eine oder sogar mehrere Codeoptimierungen, was zwar Erfolg zeigte, die Datenmenge aber so schnell wächst, dass mich das Problem sehr schnell einholt.
Kern des Problems ist eine regelmäßige Überprüfung aller Datensätze auf neue Bedingungen, die täglich eingespielt werden. So müssen dann relativ viele Datensätze gegen eben diese Bedingungen geprüft werden.
Zum einen wird dazu ein Cronjob ausgeführt und zum anderen wird nach bestimmten Benutzeraktionen der Prozess der Prüfung angestoßen, da die Überprüfung nach Benutzerinteraktion relativ zeitnah erfolgen muss.
Trotz Optimierung und vielen Versuchen die Laufzeit zu drücken bin ich immer ratloser, wie man diesem Problem sinnvoll begegnen kann. Derzeit sind durchschnittliche Laufzeiten um die 65 Sekunden noch unproblematisch, aber dennoch kritisch. Wenn die Datenmenge weiter so skaliert, ist ein Ende relativ schnell abzusehen. Ich möchte keine Lösungen, die es möglich machen, Endlosschleifen laufen zu lassen.
Wie kann man diesem Problem begegnen? Teilung des Prozesses in kleinere Arbeitspakete? Wie lässt sich so etwas abbilden?
Und sehr spannend für mich: Wie kann man während der Laufzeit auf eine Überschreitung der Laufzeit reagieren? Kann man so etwas überhaupt auf der PHP Ebene abfangen und rechtzeitig vom dem Abbruch darauf reagieren?
Viele Grüße
ec
Kommentar