Tom: Fork unter Linux durch PHP erzeugen

Beitrag lesen

Hello,

[...] Du kannst aus einem PHP-Script heraus nicht einfach einen Hintergrundprozess anstoßen und das Script beenden bevor der Prozess zu Ende gelaufen ist. Wenn Du exec() ausführst, wartet das Script so lange, bis der per exec() gestartete Prozess beendet wird.

Das ist nicht so, wenn man ihn, wie in den UCN zu "exec()"
http://www.php.net/manual/en/function.exec.php
Note von

juha at kuhazor dot idlegames dot com
03-Aug-2005 11:32
This technique was post posted by someone else earlier, however it did not work for me. This works with all Linux distros as long as path to your PHP processor is correct. The exec will return the PID for the process.

<?
$pid=exec("/usr/local/bin/php run.php > /dev/null & echo $!");

echo $pid;
?>

My run.php script is here, it is good for testing.

<?

function getmicrotime()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$starttime = getmicrotime();

$date=date("d/m/Y H:i",time());

echo "Started sleeping\n";
sleep(30);
$endtime = getmicrotime();
echo "Woke up\n";

echo "Slept ".round(($endtime-$starttime),2)."\n";

?>

Das habe ich auf PHP 4 und 5 in Apache1.x und 2.x auf Linux diverse Male impelemnetiert, und bisher überhaupt keine Probleme damit gehabt.

Und ein Fork (Abtrennung des Child vom Vaterprozess) durch das "&" auszulösen, ist eine durchaus geläufige Technik unter Linux

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)