exec im Hintergrund

Microhome

Erfahrenes Mitglied
Hallo zusammen,
ich möchte einen Prozess realisieren, der aus mehreren Schritten besteht. Da der gesamte Prozess mehrere Stunden andauert, möchte ich diesen im Hintergrund laufen lassen.

Der erste Schritt ist der Upload einer Datei über den Brwoser. Im Anschluss daran soll diese im 2. Schritt (ab hier Hintergrund) ausgelesen werden. In den folgenden Schritten sollen dann verschiedene Datenbankoperationen erfolgen.

Daher meine grundlegende Frage: Wie ist es möglich eine PHP Datei im Hintergrund, also nur auf dem Server, auszuführen, ohne dass der Browser damit verbunden ist?


Ich habe folgende kleine Scripte zur Veranschaulichung geschrieben:

step1.php
Code:
<?
exec ('php5 -f step2.php');
?>


step2.php
Code:
<?
sleep (30);
?>


Leider wartet der Browser nun bist das zweite Script fertig ist und ist somit erst nach 30 Sekunden fertig geladen. Wie kann ich das verhindern?

Außerdem würde ich gern einen Parameter übergeben. Soweit ich weiß, ist das nicht so einfach über ?parameter=foo möglich. Habt ihr eine entsprechende Lösung?



Vielen Dank und beste Grüße aus Berlin.
 
Zuletzt bearbeitet:
Da du den Post als erledigt markiert hast entnehme ich, dass du die Lösung gefunden hast.

Ich hab gerade das selbe Problem kannst du mir deinen Ansatz zeigen :)
 
Hi queicherius,
ja, du kannst ein Script über folgenden Code in den Hintergrund schieben:

Code:
system ('(php -f /<path>/<script>.php) > /dev/null &');



Viel Spaß und beste Grüße! :)
 
Zurück