# PHP Prozess im Hintergrund weiterlaufen lassen



## strex (16. März 2008)

Hi,

derzeit scheitere ich gerade an einer sehr schwierigen Sache. Ich möchte ein Download per PHP bzw. wget starten. Das ist kein Problem:


```
$command="wget htttp://www.test.de/test.rar"; 
                system($command,$res);
```

PHP bleibt aber an dieser Stelle stehen und wartet bis dieser fertig ist. Das möchte ich aber nicht, sondern das PHP script soll weiterlaufen, denn weiter unten startet eine Schleife, dass den Downloaprozess überwacht und den Fortschritt ausgibt. 

Man muss die Ausgabe bzw. den Stream auf eine andere Datei umleiten, bloß wie mache ich dieses?

Vielen Dank für eure Hilfe!


----------



## KD3 (16. März 2008)

Das kannst du mit AJAX machen, du möchtest ja ein Ladebalken darstellen bis es fertig ist oder?

Wenn ja dann muss du ein AJAX Uploadscript erstellen, aber diesen so erstellen das der entfernte server der uploader ist.


----------



## strex (16. März 2008)

Nein so einfach ist es nicht, ich brauche keinen Ladebalken, da das script ja eh nur als cron läuft. Ich möchte mehrere forks haben.


----------



## KD3 (16. März 2008)

Einfach ist es wohl, aber nur mit AJAX kombiniert. Du musst ja kein Ladebalken haben, versuch es mal und du wirst sehen, dass AJAX vieles vereinfachen wird.


----------



## strex (16. März 2008)

Nein, das PHP script läuft aber nicht weiter sobald das Systemcommand an die shell gesendet wurde. Erst nachdem der Download beendet wurde geht es weiter, aber ich möchte das nach dem Start des Downloads, der PHP Code weiter ausgeführt wird. Das wird auch im php.net Beschrieben, wie man dies löst, ist leider nicht darin enthalten. 



> Beachten Sie auch, dass wenn Sie ein Programm mit dieser Funktion starten und Sie es im Hintergrund laufen lassen möchten, Sie sicherstellen müssen, dass die Ausgabe des Programms in eine Datei oder anderenen Ausgabestream umgeleitet wird. Andernfalls wird PHP solange laufen, bis das Programm beendet ist.



Ajax ist nicht für alles ein Heilmittel, auch wenn das gerne so Beschrieben wird.


----------



## Michael Engel (17. März 2008)

In den Comments sind entsprechende Beispiele zu finden. Wie z.B.

http://de.php.net/manual/de/function.system.php#59884


----------



## strex (21. März 2008)

Ja, dass hat geklappt. Den Kommentar hatte ich wohl übersehen. Gibt es ein shell Kommando, dass die Programmlaufzeit von wget auf 3 Stunden begrenzt?


----------



## Dario Linsky (21. März 2008)

Lösungsvorschläge für das Abbrechen des Hintergrundprozesses nach 3 Stunden bitte in das andere Thema von strex posten: http://www.tutorials.de/forum/linux-unix/308208-programmlaufzeit-begrenzen-new-post.html

Grüße, D.


----------

