Ich weiß, dass dies schon einmal gefragt wurde, aber ich kann kein bestimmtes Teil des Puzzles herausfinden und würde wirklich jede Hilfe dazu brauchen!Daemon, der eine "Warteschlange" überwacht und Befehle asynchron ausführt
Programmablauf:
ursprünglicher Antrag: Browser -> Apache -> PHP -> PHP sendet Taskinfo über eine Zeitbefehl aufwendig, um 'etwas', und gibt sofort.
Es können mehrere Anfragen gleichzeitig von mehreren Browsern an den Server gesendet werden.
SERVER: Das 'etwas' läuft einen bestimmten Befehl mit dem Taskinfo als params parallel im Hintergrund> spart Ausgabe DB
AJAX: -> Apache -> PHP -> Prüft DB -> Gibt Informationen an den Benutzer zurück.
Ich habe Lösungen wie Rabbitmq/Gearman etc erforscht, aber bin nicht in der Lage, sie herauszufinden.
Das präzise Problem ist, dass ich den Teil nicht herausfinden kann, wo der 'etwas' (ein Daemon) den angegebenen Befehl automatisch ausführt, wenn eine Aufgabe zu einer 'Warteschlange/Liste' hinzugefügt wird. So wie ich es sehe, muss ein Befehl getrennt vom Daemon ausgeführt werden, und ich verstehe nicht, wo und wie dieser Befehl ausgeführt werden soll.
Kurz gesagt: Ein nicht blockierender Daemon, der eine Warteschlange überwacht und einen bestimmten Befehl ausführt!
Aber wie?
Seit einigen Tagen in diesem stecken geblieben. Ich weiß, es gibt einfachere Alternativen wie curl und exec(), aber sie sind nicht für meinen Anwendungsfall geeignet.
Dank
Je nachdem, was Sie verwenden, um den Daemon zu erstellen, sollte es eher geradlinig sein. Mithilfe einer Ereignisschleife können Sie auf den Socket für eingehende Aufgaben reagieren. Sie stellen die Aufgabe in eine Warteschlange. Während Aufgaben vorhanden sind, registrieren Sie einen Rückruf, um ihn auszuführen. Nach dem Ausführen der Aufgabe, holen Sie den nächsten aus der Warteschlange etc. Es sollte ziemlich einfach sein, dies zu tun mit Bibliothek wie [Eiszapfen] (https://icicle.io/) – Mjh
oh von 'Daemon' ich meinte so etwas wie Rabbitmq Beanstald Server, der wahrscheinlich nur beim Start ausgeführt wird. Danke für icicle, es auschecken .. –