heyho,
diesmal ne relativ einfache und kurze Frage, und das wichtigste auch mal wieder ein auf PHP zugeschnittene Frage^^
ich möchte nicht lange um den heissen Brei reden, es geht um folgendes:
ich habe eigentlich 3 verschiedene Use-Cases:
1) geplanter Task, auf die Sekunde genau
2) Task, der sofort ausgeführt werden soll, aber nicht vom selben PHP Programm (also ein art detached thread)
3) sich in einem Intervall wiederholende Aufgaben, das Intervall soll aber dynamsich angepasst werden können
Das ganze soll aus zwei verschiedenen Sichtweisen gesehen werden:
1s) Server mit wenig bis sehr wenig Useraufkommen/wenig last
2s) Server mit viel Useraufkommen/las; Distributed Programming
So Dinge wie reddis, beanstalkd und so dinge kenne ich....
Wie würdet ihr das ganze realisieren?
ein paar gedankengänge, überlegungen von mir:
Bei wenig useraufkommen würde ich bei 2) einfach ein exec eines weiteren php-scriptes machen.
Bei viel useraufkommen eben etwas ähnliches was man bei Threadpgrogramming eben auch macht, ..... ich hab ein paar Workerthreads/workerphp-scripte im hintergrund laufen, die sich arbeitspakte holen
ähnliches gilt eigentlich für 1):
wobei ich das ne art gameLoop/Main-Loop mit reinmachen würde.... Heisst mehre syscalls mit sleep bis zum ungefähren zeitpunkt der ausführung, in der nähe ein while(true) ohne sleeps mehr
nähe bedeutet wirklich 1-2sec abstand bis zur ausführung
Dann bekomme ich mit dem while(true) eine millisekunden genaue ausführung hin
-> Ausführung dann aber auch wieder in exec externes php-script auslagern
was mache ich wenn ich bei 3) cronjobs nicht auf minuten legen möchte?
was möchte ich wenn ich das cronjobintervall dynamisch anpassen möchte, und nicht unbedingt aus php in meinen cronjobs rumschreiben möchte......
allgemein:
lang laufende PHP-Scripte finde ich unschön,
jede stunde abschiessen und über systemd neustarten lassen?
was mach ich um klassischse Wettlaufsituationen zu vermeiden, Overlapping von Task-Executions, CronJob-Executions
-> klassische Lockfiles?, wirklich?
oft startende php-scripte finde ich auch unschön, ein programm zu starten ist sehr teuer-> das spricht eigentlich dann auch gegen exec weiteres php-script
sollte ich lieber ein Java/C++/C Programm im hintergrund werkeln lassen, das das ganze regelt und kein langlaufendes PHP-Script?
(das problem des exec von den Task-PHP-Scripten besteht hier aber weiterhin, wenn ich keine langlebigen php-worker-threads laufen lasse)
habe jetzt nur ein paar dinge, eventualitäten zusammengetragen, sicherlich einiges vergessen......, aber.....
...wie würdet ihr 1,2,3) mit beachtung von 1s) und 2s) realisieren
wie würdet ihr das ganze schützen, gegen overlapping, absturz, und so dingen halt
lg knotenpunkt
diesmal ne relativ einfache und kurze Frage, und das wichtigste auch mal wieder ein auf PHP zugeschnittene Frage^^
ich möchte nicht lange um den heissen Brei reden, es geht um folgendes:
ich habe eigentlich 3 verschiedene Use-Cases:
1) geplanter Task, auf die Sekunde genau
2) Task, der sofort ausgeführt werden soll, aber nicht vom selben PHP Programm (also ein art detached thread)
3) sich in einem Intervall wiederholende Aufgaben, das Intervall soll aber dynamsich angepasst werden können
Das ganze soll aus zwei verschiedenen Sichtweisen gesehen werden:
1s) Server mit wenig bis sehr wenig Useraufkommen/wenig last
2s) Server mit viel Useraufkommen/las; Distributed Programming
So Dinge wie reddis, beanstalkd und so dinge kenne ich....
Wie würdet ihr das ganze realisieren?
ein paar gedankengänge, überlegungen von mir:
Bei wenig useraufkommen würde ich bei 2) einfach ein exec eines weiteren php-scriptes machen.
Bei viel useraufkommen eben etwas ähnliches was man bei Threadpgrogramming eben auch macht, ..... ich hab ein paar Workerthreads/workerphp-scripte im hintergrund laufen, die sich arbeitspakte holen
ähnliches gilt eigentlich für 1):
wobei ich das ne art gameLoop/Main-Loop mit reinmachen würde.... Heisst mehre syscalls mit sleep bis zum ungefähren zeitpunkt der ausführung, in der nähe ein while(true) ohne sleeps mehr
nähe bedeutet wirklich 1-2sec abstand bis zur ausführung
Dann bekomme ich mit dem while(true) eine millisekunden genaue ausführung hin
-> Ausführung dann aber auch wieder in exec externes php-script auslagern
was mache ich wenn ich bei 3) cronjobs nicht auf minuten legen möchte?
was möchte ich wenn ich das cronjobintervall dynamisch anpassen möchte, und nicht unbedingt aus php in meinen cronjobs rumschreiben möchte......
allgemein:
lang laufende PHP-Scripte finde ich unschön,
jede stunde abschiessen und über systemd neustarten lassen?
was mach ich um klassischse Wettlaufsituationen zu vermeiden, Overlapping von Task-Executions, CronJob-Executions
-> klassische Lockfiles?, wirklich?
oft startende php-scripte finde ich auch unschön, ein programm zu starten ist sehr teuer-> das spricht eigentlich dann auch gegen exec weiteres php-script
sollte ich lieber ein Java/C++/C Programm im hintergrund werkeln lassen, das das ganze regelt und kein langlaufendes PHP-Script?
(das problem des exec von den Task-PHP-Scripten besteht hier aber weiterhin, wenn ich keine langlebigen php-worker-threads laufen lasse)
habe jetzt nur ein paar dinge, eventualitäten zusammengetragen, sicherlich einiges vergessen......, aber.....
...wie würdet ihr 1,2,3) mit beachtung von 1s) und 2s) realisieren
wie würdet ihr das ganze schützen, gegen overlapping, absturz, und so dingen halt
lg knotenpunkt
Kommentar