mehrer php dateien als jeweils eigenen Prozess starten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mehrer php dateien als jeweils eigenen Prozess starten

    Hallo auch...
    ich habe 4 php dateien,
    die 1 dreht bilder, die 2 copiert bilder die 3 und 4 starten convert befehl in 2 verschiedenen Ordnern.

    Nun soll folgendes passieren:
    die 1 soll gestartet werden, wenn diese fertig ist
    sollen 2-4 gestartet werden und zwar so das der Rechner jede von denen
    auf einem Qadcore prozesor jeweils für jede datei einen eigenen Prozess öffnet. ( jede datei benutzt einen der 4 Prozessor kernen ).

    zum zweiten hätte ich gerne das der convert befehl 4 bilder gleichzeitig rechnet.

    PHP-Code:
    for ($I intval($row[2]); $I <= intval($row[3]); $I++) {
                    
    $srcfile $pfad  sprintf("IMG_%04d.JPG"$I);
                    
    $dstfile $img_dir1 "/" sprintf("IMG_%04d.JPG"$I);

                           
    $inputescapeshellarg($srcfile);
            
    $outputescapeshellarg($dstfile);

        
    $command "convert ".$input." -resize 18% ".$output."";
             
    passthru($command,$ausgabe); 
    habe ich im moment, da rechnet er jedes bild nach ein ander,
    könnt ihr da bitte helfen ?
    Zuletzt geändert von ronaldl; 17.09.2007, 07:13.

  • #2
    Re: mehrer php dateien als jeweils eigenen Prozess starten

    Zum Zweiten könntest du den Prozess forken - ansonsten wartet PHP immer darauf, dass exec ganz zu Ende ist, bevor es weiterarbeitet (außer man kann eventuell mit & am Ende was reißen - mal ausprobieren).

    Zum Ersten ... tjo, kann man überhaupt dem Rechner sagen welches Skript auf welcher CPU laufen soll?
    Hab davon keine Ahnung, zumal sowas das OS doch eigentlich selbst am besten entscheiden kann - denke ich - dementsprechend eventuell wieder einfach nur eine fork-Lösung...

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Bei system kannst du Ausgabe umleiten, sodass PHP nicht auf die komplette Ausführung wartet. Soweit ich weiß gibt es unter Unix einen Befehl mit dem man Threads einzelnen Prozessoren zuweisen kann, ob das in diesem Fall sinnvoll ist sollte ein Performancetest zeigen.
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        proc open evt.

        wie ist das denn mit proc open ?
        nur die übergabe parameter dazu versteh ich nicht....

        kann mir jemand sagen wie die beiden zeilen umgewandelt in proc open aussehen können ?

        PHP-Code:
        $command "convert ".$input." -resize 17% ".$output."";
        passthru($command,$ausgabe); 

        Kommentar


        • #5
          Re: proc open evt.

          Original geschrieben von ronaldl
          wie ist das denn mit proc open ?
          Weißt du überhaupt was das für eine Funktion ist?
          Weißt du, dass die nichts mit deinen Problemen zutun hat?

          Hast du dir mal das manual durch gelesen?! Da sind Beispiele für Aufrufe.

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            @ghostgambler
            Nein mir hat mal ein Programiere als ich das thema vor längerer Zeit ansprach das das wohl damit ginge...
            Und klar hab ich mir das durchgelesen und das beispiel angeschaut,
            aber verstanden habe ich s nicht.
            So als Blutiger Anfänger...

            Zum Thema forken:
            hab mal gegoogelt aber das hilft mir nicht wirklich, es könnte zwar sein das das geht aber wie setzte ich das um ?
            Alles was ich finde hat nicht ansatzweise was mit php tun.
            Ich bräuchte mal ne Erklärung für nen dau...
            Ich würde mich freuen.

            thx ronny

            Kommentar


            • #7
              Guck mal hier: pcntl_fork

              Kommentar


              • #8
                eigentlich brauchst du das alles nicht; es wird reichen, mit einem shell script das erste skript starten, nach seiner beendigung drei weitere starten, von mir aus mit kommandozeilenparametern, die angeben, welcher prozess welche teile der bilder-ordner übernimmt (damit sie nicht alle die selben bilder kovertieren).

                wenn also drei (warum nicht vier?) prozesse gleichzeitig viel prozessorleistung benötigen, wird das betriebsystem sie schon selbst auf die paar kerne verteilen.

                also in etwa:
                Code:
                php skrip1.php
                
                php skript2.php --start=1 --end=100 & 
                php skript3.php --start=101 --end=200 &
                php skript4.php --start=201 --end=300 &

                Kommentar


                • #9
                  scriptauruf

                  die idee ist simple und gut ich denke das sollte gehen aber wie übergebe ich den scripts die daten ?
                  Und wie rufe die scripte am besten aus php aus system, exec, pathrue...

                  Kommentar


                  • #10
                    Re: scriptauruf

                    Original geschrieben von ronaldl
                    die idee ist simple und gut ich denke das sollte gehen aber wie übergebe ich den scripts die daten ?
                    Kommandozeilenparameter, Datenbank, Datei, irgendwie direkt an das Programm, bla, da gibt es so viele Möglichkeiten...

                    Und wie rufe die scripte am besten aus php aus system, exec, pathrue...
                    Vielleicht nimmst du am besten die Funktion, die am besten zu deinem Anwendungszweck passt. Dafür ist es dann natürlich nötig, dass du die Doku (diesmal MIT Verstand) liest.

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar

                    Lädt...
                    X