Hallo liebes Forum,
Ich habe noch ein weiteres Problem - gegeben sei folgendes PHP-Script:
$pid = pcntl_fork();
if($pid == -1) {
echo "Could not fork, exit.\n";
exit;
}
elseif($pid) {
echo "Jabber Bot forked, its PID is $pid.\n";
exit;
}
elseif(!posix_setsid()) {
echo "Could not detach from terminal, exit.\n";
exit;
}
Dieses Script macht anschließend noch ein paar Sachen, die einige Zeit benötigen.
Nun möchte ich dieses Script über einen Webaufruf starten, dazu verwende ich im PHP-Script was über das Web aufgerufen wird folgenden Befehl:
shell_exec("./pfad/zum/script");
Ich habe auch schon exec(), passthru() oder den Backtick-Operator probiert, ebenso habe ich schon probiert, an den Prozess noch ein & anzuhängen, um ihn als Hintergrundprozess zu starten - trotzdem will PHP warten bis das Script zu Ende durchgeführt ist, sodass die Seite im Browser nicht weiterlädt.
Was kann ich machen? Ich dachte eigentlich durch das forken würde das obige PHP-Script als ein anderer, eigenständiger Prozess weiterlaufen und dadurch nicht mehr unter der Kontrolle von PHP laufen und PHP würde die Website dann weiter ausliefern.
Tja, hab ich mich wohl getäuscht ;-) Doch wie lässt sich das Problem umgehen?
MfG, Dennis.