Dennis: exec() wartet nicht obwohl aufgerufenes Script sich forked

Beitrag lesen

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.

0 111

PHP-CLI, in PHP auf kill reagieren

Dennis
  • php
  1. 0
    Geplagter
    1. 0
      Dennis
  2. 1
    Tom
  3. 0
    Manuel B.
    1. 0
      Tom
      1. 0
        Manuel B.
      2. 0
        eddi
    2. 0
      Dennis
      1. 0
        Manuel B.
        1. 0
          Dennis
          1. 0
            Manuel B.
        2. 0
          eddi
          1. 0
            Manuel B.
    3. 2
      dedlfix
      1. 0
        Tom
        1. 0
          eddi
          1. 0
            Dennis
            1. 0
              Christian Seiler
              1. 0
                Dennis
                1. 0
                  Tom
                  1. 0
                    Christian Seiler
      2. 0

        Funktioniert, aber ich habs noch nicht ganz verstanden...

        Dennis
        1. 0
          Tom
          1. 0

            Noch eine Frage

            Dennis
            • webserver
            1. 0
              Tom
              1. 2
                Christian Seiler
                1. 0
                  Tom
                  1. 0
                    Christian Seiler
                    1. 0
                      Tom
                      1. 0

                        Break, CTRL-C, SIGINT, usw.

                        Tom
                        1. 0
                          Christian Seiler
                      2. 0
                        Christian Seiler
            2. 2
              Christian Seiler
              1. 0
                Dennis
                1. 0
                  Christian Seiler
                  1. 0
                    Dennis
                    1. 0
                      Christian Seiler
                      1. 0
                        eddi
                        1. 0
                          Christian Seiler
                          1. 0

                            sleep() vs. SIGSTOP

                            Dennis
                            1. 0
                              Christian Seiler
                              1. 0
                                Dennis
                                1. 0
                                  Christian Seiler
                      2. 0
                        Christian Seiler
          2. 0
            Tom
            1. 0
              Christian Seiler
              1. 0
                Tom
                1. 0
                  Christian Seiler
                  1. 0
                    Tom
                    1. 0
                      Christian Seiler
                      1. 0
                        Manuel B.
                        1. 0
                          Tom
                          1. 0
                            Christian Seiler
                          2. 0
                            Manuel B.
                      2. 0
                        Tom
                        1. 0
                          Christian Seiler
                          1. 0
                            Dennis
                            1. 1
                              Christian Seiler
        2. 1
          Christian Seiler
          1. 0
            Dennis
            1. 0
              eddi
              1. 0
                Dennis
                1. 0
                  Manuel B.
                  1. 0
                    eddi
                    1. 0
                      Manuel B.
                      1. 0
                        Dennis
                        1. 0
                          Manuel B.
                          1. 0
                            Dennis
                            1. 0
                              Manuel B.
                              1. 0
                                Dennis
                                1. 0
                                  Manuel B.
                                  1. 0
                                    Dennis
                                    1. 0
                                      Manuel B.
                  2. 0
                    Dennis
                    1. 0
                      Manuel B.
            2. 0
              Christian Seiler
              1. 0
                Dennis
                1. 0
                  Christian Seiler
                  1. 0
                    Dennis
  4. 0

    pcntl_fork() und posix_setsid(), was passiert da?

    Dennis
    1. 0
      Dennis
  5. 0

    Optimierung bzgl. Speicherauslastung bei mehreren Prozessen

    Dennis
    1. 0
      Christian Seiler
      1. 0
        Dennis
        1. 0
          eddi
          1. 0
            Dennis
            1. 0
              eddi
              1. 0
                Dennis
                1. 0
                  eddi
                  1. 0
                    Dennis
                    1. 0
                      eddi
      2. 0
        Manuel B.
        1. 0
          eddi
  6. 0

    exec() wartet nicht obwohl aufgerufenes Script sich forked

    Dennis
    1. 0
      eddi
    2. 0
      Christian Seiler
      1. 0
        Dennis
        1. 0
          Christian Seiler
          1. 0
            Christian Seiler
            1. 0
              Dennis
              1. 0
                Christian Seiler
                1. 0
                  Dennis
                  1. 0
                    Dennis
                    1. 0
                      Christian Seiler
                      1. 0

                        mod_auth_pam - Funktionsweise

                        Dennis
                        • webserver
                        1. 0
                          eddi
                          1. 0
                            Dennis
                            1. 0
                              Dennis
                              1. 0
                                eddi
                      2. 0

                        mod_authnz_external und pwauth

                        Dennis