Hallo Dennis,
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?
Habe ich richtig verstanden?
Du hast 1) ein PHP-Script, das vom Web aus aufgerufen wird und 2) ein PHP-Script, das den obigen fork()-Code enthält? Und 1) ruft 2) per shell_exec auf?
Naja, wenn PHP fork() wirklich 1:1 umsetzt, dann kann (außer PHP stracet den Kindprozess, was ich mir nicht vorstellen kann) IMHO eigentlich der einzige Grund, warum PHP trotzdem auf den geforkten Prozess wartet, der sein, dass der geforkte Prozess noch Dateideskriptoren offen hat. Versuch mal (ist ein Schuss ins Blaue, ich hab keine Ahnung ob's a) wirklich dran liegt und b) ob das dann auch tatsächlich funktioniert, selbst wenn's dran liegt) die 3 Standard-Dateideskriptoren zu schließen, d.h. fclose(STDIN); fclose(STDOUT); fclose(STDERR); Vielleicht geht's ja.
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup