XaraX: Prozesse Gabeln in PHP

Beitrag lesen

Hallo fee,

Jep. Und das wichtigste ist, nicht zu übersehen, daß man PHP als CGI kompilieren und einbinden muß ... hehe. Es hat mich viel Zeit gekostet, das herauszufinden. Außerdem sollte man irgendwo 'ne Linux/Unix-Kiste rumstehen haben, zum Ausprobieren. Funzt nämlich nicht mit Windows.

Nach ./configure --help ist zu lesen:

--enable-pcntl          Enable experimental pcntl support (CLI/CGI only)

Mit CGI arbeite ich überhaubt nicht gerne - aber habe mir immer eine CLI-Version kompilieren lassen. Da ich verschiedenste Sachen gerne automatisiere, andererseits ungerne mit Shellscripten arbeite, gibt es an allen Rechnern, an denen ich arbeite den Befehl "eddi".

eddi@linux:~> eddi header harry.ilo.de/projekte/berge/

HTTP/1.1 200 OK
Date: Wed, 25 Aug 2004 08:49:28 GMT
Server: Apache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

Eine vielzahl von Komandos lasse ich lieber von PHP abarbeiten (wer hat da gelacht?!), als von Shell, da ich PHP erheblich besser kennen als Shellscripte...

Wenn pcntl nur auf dieser Ebene Funktionieren sollte, sei mir das auch recht. Und ich denke schon, bevor ich noch kein Prozess geteilt habe, baue ich mir im Fehlerfalle lieber Linux 1000 auf meinem Schmuckstück neu auf, als dumm zu sterben.

Im Manual steht unter http://de3.php.net/manual/en/ref.pcntl.php ja schon ein Haufen Zeug drin, wenn man das mal durchackert bekommt man zumindest mal 'nen ersten Eindruck, wie denn der Hase so läuft.

[...]

Ich habe damals an einem mehr oder minder einfachen CMS gearbeitet, das einen Prozess abspalten sollte, um lästige "Drecksarbeit" zu erledigen: Datenbankeinträge machen, eMails verschicken + diverser anderer Müll, der teilweise recht zeitintensiv war. Das waren allerdings alles Aufgaben, die auf den Fortlauf des anderen Prozesses keinerlei Einfluß hatte. Spätestens wenn die beiden Prozesse aber konkurieren rennt man als unerfahrener (als den ich mich bei diesem Thema durchaus bezeichnen möchte) in eine Menge (!) faustdicker Probleme ...

Zu diesen Problemen würde ich gerne erstmal kommen, aber es Fehlt mir der Klaps in die richtige Richtung. Bei mir platzt einfach nicht der Knoten :(
Beispiel aus dem Manual http://de3.php.net/manual/de/function.pcntl-fork.php:

<?php
$pid = pcntl_fork();

Wie habe ich mir genau diesen Punkt vorzustellen?

Laut Manual wird eine nur in der Prozessnummer ab-

weichender identischer Prozess gestartet.

Für mein Verständnis führt dies zu einer Endlos-

schleife an Kindprozessen, die jeweils eine neuen

Kindprozess starten.

if ($pid == -1)
   {
   die("could not fork");
   }
elseif ($pid)
   {
   // we are the parent
   }
else
   {
   // we are the child
   }
?>

Genau da drück mir der Schuh.
Danke noch mal für Deine Antwort; ich habe Dir eine Mail geschrieben (mit sehr großem jpg-Anhang), da es schade wäre, wenn es für mich immer so aussehen sollte ;)

Gruß aus Berlin!
eddi

--
Manchmal trifft es einen doch ganz unverhofft t86591:
> '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)