Es gibt verschiedene Möglichkeiten aus einer Php Applikation heraus Background Prozesse anzustoßen. Eine Möglichkeit ist die Kombination aus einem Php-exec mit dem wget Befehl.
Ich hatte eine Adwords-Link-Validator Applikation geschrieben. Hier werden rund 8.000 Links auf ihren Header Status kontrolliert. Hierbei ist es natürlich wichtig, den Prozess nur anzustoßen und nicht abwarten zu müssen.
Gerade bei langen Prozessen ist es wichtig den User auf dem laufenden zu halten und nicht minutenlang vor eine Sanduhr zu setzen. Das ist sehr wichtig für die Usibility und professionelle Applikationen. Generell kann man das immer bei Prozessen anwenden, die länger als 5 Sekunden brauchen. Hier sollte dem User zumindest ein Fortschritt in Prozent angezeigt werden.
Php exec command not wait for result
1 |
exec('wget http://127.0.0.1/path/to/webservice > /dev/null 2>&1 &'); |
In dem oben aufgeführten Beispiel sieht man den Webservice Aufruf über einen Php exec Befehl. Mit der Angabe von „> /dev/null“. Hier wird also der Rückgabewert auf den Null Device geschrieben. So kommt also kein Wert mehr zurück und der Php exec Befehl kann nur als Anstoß ausgeführt werden.
Es gibt natürlich auch Wege hier den Staus des Webservice abzufragen. Hier bietet es sich unter anderem an die Angaben zum Prozess in einer Datenbank abzuspeichern und ggf. über einen AngularJS-Interval Befehl auszulesen und die Angaben ans Frontend zu rendern.