[PHP5] PHP mal langsam, mal schnell

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

  • [PHP5] PHP mal langsam, mal schnell

    Hallo Leute,

    ich verzeifele so langsam an einem Problem, was simpel klingt, aber nicht simpel zu sein scheint..
    Und zwar betreibe ich php5 als ISAPI auf nem Win2003 IIS Webserver. Ich habe den vor kurzem von Win 2000 und php4 migriert.
    Alles funktioniert soweit sehr zufriedenstellend - php5 tut seinen Dienst.

    Nur eins ist sehr seltsam:
    Auf manchen PCs sind die Abfragen sehr langsam, die unten dargestellte Abfrage dauert sehr lange, wobei sie auf anderen PCs innerhalb von Millisekunden dargestellt wird.
    Dazu kommt noch, dass die PCs (Server und Workstations gleichermaßen) diesen Status nicht behalten - ein PC, der an einem Tag das Script langsam ausführte, ist an einem anderen Tag schnell und umgekehrt, obwohl keiner der Rechner neugestartet wurde (weder Webserver noch zugreifender Client).
    Es liegt auch nicht am Browser (ist ein PC langsam, so tritt das Phänomen bei jedem Browser auf, der auch diesem Rechner gestartet wurde)....

    Es ist zum Hühner melken... Kann damit einer was anfangen? Ein Tipp vielleicht? Ich steh mittlerweile aufm Schlauch...

    Folgendes Script wird manchmal langsam, manchmal schnell ausgeführt:

    Keine Abfragen - nur ein paar Schleifendurchläufe....

    <?PHP
    $i=0;
    $j=0;
    while($i<1000)
    {
    echo"<table>";
    if($i==10) echo"<tr><td>10</td></tr>";
    if($i==20) echo"<tr><td>20!</td></tr>";
    if($i==30) echo"<tr><td>30!</td></tr>";
    if($i==40) echo"<tr><td>40!</td></tr>";
    if($i==50) echo"<tr><td>50!</td></tr>";
    if($i==60) echo"<tr><td>60!</td></tr>";
    if($i==70) echo"<tr><td>70!</td></tr>";
    if($i==80) echo"<tr><td>80!</td></tr>";
    if($i==90) echo"<tr><td>90!</td></tr>";
    if($i==100) echo"<tr><td>100!</td></tr>";

    if($i==100) echo"<tr><td>100!</td></tr>";
    if($i==200) echo"<tr><td>200!</td></tr>";
    if($i==300) echo"<tr><td>300!</td></tr>";
    if($i==400) echo"<tr><td>400!</td></tr>";
    if($i==500) echo"<tr><td>500!</td></tr>";

    if($i==600) echo"<tr><td>600!</td></tr>";
    if($i==700) echo"<tr><td>700!</td></tr>";
    if($i==800) echo"<tr><td>800!</td></tr>";
    if($i==900) echo"<tr><td>900!</td></tr>";
    if($i==1000) echo"<tr><td>1000!</td></tr>";
    echo"</table>";
    $i++;
    if($i==999 && $j<5)
    {$i=0;$j++;}
    }

    ?>

  • #2
    Haste mal ne Serverseitige Zeitmessung gemacht? Bis jetzt könnte es genauso gut an der Übertragung liegen.

    Kommentar


    • #3
      Könnte ich noch machen... Die Rechner stehen aber alle in einem 100Mbit Netz und der Ping von einer Machine die langsam ist zum Webserver ist wie er ein sollte... LAN-like...
      Also du meinst es liegt am Netz.... mal schauen...

      Kommentar


      • #4
        hab noch keine ahnung, woran es liegt, aber möchte zunächst mal ausschließen, dass der PHP Interpreter die seiten je nach Anfrage-Rechner (den er noch nichtmal kennt) unterschiedlich schnell generiert.

        Kommentar


        • #5
          Ich hab das Script jetzt erweitert um eine Zeitfunktion.... Ich bekomme korrekte Zeitmessungen als Rückgabe... Meintest du das mit Serverseitg messen?

          <?PHP

          $mtime = microtime();
          $mtime = explode(" ",$mtime);
          $mtime = $mtime[1] + $mtime[0];
          $starttime = $mtime;

          $i=0;
          $j=0;
          while($i<1000)
          {
          echo"<table>";
          if($i==10) echo"<tr><td>10</td></tr>";
          if($i==20) echo"<tr><td>20!</td></tr>";
          if($i==30) echo"<tr><td>30!</td></tr>";
          if($i==40) echo"<tr><td>40!</td></tr>";
          if($i==50) echo"<tr><td>50!</td></tr>";
          if($i==60) echo"<tr><td>60!</td></tr>";
          if($i==70) echo"<tr><td>70!</td></tr>";
          if($i==80) echo"<tr><td>80!</td></tr>";
          if($i==90) echo"<tr><td>90!</td></tr>";
          if($i==100) echo"<tr><td>100!</td></tr>";

          if($i==100) echo"<tr><td>100!</td></tr>";
          if($i==200) echo"<tr><td>200!</td></tr>";
          if($i==300) echo"<tr><td>300!</td></tr>";
          if($i==400) echo"<tr><td>400!</td></tr>";
          if($i==500) echo"<tr><td>500!</td></tr>";

          if($i==600) echo"<tr><td>600!</td></tr>";
          if($i==700) echo"<tr><td>700!</td></tr>";
          if($i==800) echo"<tr><td>800!</td></tr>";
          if($i==900) echo"<tr><td>900!</td></tr>";
          if($i==1000) echo"<tr><td>1000!</td></tr>";
          echo"</table>";
          $i++;
          if($i==999 && $j<5)
          {$i=0;$j++;}

          $mtime = microtime();
          $mtime = explode(" ",$mtime);
          $mtime = $mtime[1] + $mtime[0];
          $endtime = $mtime;
          $totaltime = ($endtime - $starttime);
          echo $totaltime;

          }

          ?>

          Kommentar


          • #6
            der code ist zwar ohne PHP-Tags (http://www.php-resource.de/forum/sho...threadid=50454) etwas schwer zu lesen, aber ich denke, dass du gemacht hast, was ich wollte...

            Ich bekomme korrekte Zeitmessungen als Rückgabe.
            korrekt heißt in diesem falle, kleine Werte? Egal ob die seite lang oder kurz zum laden braucht?

            Kommentar


            • #7
              Also ich messe da die Zeitabstände, die zwischen den einzelnen 10er Schritten liegen...
              Wenn er langsam ist, dann sind die Werte auch dementsprechend groß und klein, wenn es schnell geht...

              Kommentar


              • #8
                Hallo,

                wie siehts mit der Prozessor/Speicherauslastung im Taskmanager aus wenn eine der Maschinen plötzlich langsam wird? Fangen die Festplatten evtl. an sich mehr zu drehen als es notwendig erscheint?

                Gruss
                Quetschi
                Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                Schön - etwas Geschichte kann ja nicht schaden.
                Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                Kommentar


                • #9
                  Muss ich mal schauen... Gute Idee... Ich danke aber kaum, dass ein 2Ghz, 512MB Ram Rechner Probleme mit ner While-Schleife hat....

                  Kommentar


                  • #10
                    Versuch doch mal die ganzen If's durch ein switch-case zu ersetzen oder wenigstens if-elseif-elseif...else draus zu machen. Vielleicht bringts was.

                    Kommentar


                    • #11
                      Versuch doch mal die ganzen If's durch ein switch-case zu ersetzen oder wenigstens if-elseif-elseif...else draus zu machen. Vielleicht bringts was.
                      *lol* ich denke, dass dieses script nur zum debuggen dient!

                      Kommentar


                      • #12
                        Re: [PHP5] PHP mal langsam, mal schnell

                        Original geschrieben von sulb
                        ...
                        Folgendes Script wird manchmal langsam, manchmal schnell ausgeführt:

                        Keine Abfragen - nur ein paar Schleifendurchläufe....

                        <?PHP
                        ...
                        ?>

                        Kommentar


                        • #13
                          aber welchen sinn siehst du hinter dem script? daher meine vermutung.

                          Kommentar


                          • #14
                            Wahrscheinlich alles entfernt bis auf die logische Struktur. Aber dennoch zeigt dieses Script o.g. Verhalten. Also könnte If's ersetzen durchaus sinnvoll sein.

                            Ich kann nur sagen, daß es mit switch ein klein wenig, mit elseif noch etwas schneller geht. Allerdings minimal, die extremen Laufzeiten des Originals kann ich nicht reproduzieren.

                            Kommentar


                            • #15
                              Es geht draum, dass die aktuellen php Seiten mal schnell und mal langsam liefen... Es stellte sich heraus, dass es nicht mit Abfragen oder ähnlichem zu tun hat, sondern nur rein mit php... Daher reicht zum testen auch diese while-schleife....
                              Also der Prozessor ist quasi bei 0-auslastung und beim RAM siehts genauso aus....

                              Die While-Schleife kann man übrigens hier bewundern... Alle 10 Schritte gibt er dabei die Zeit aus....

                              http://www.dej.uni-saarland.de/php/while.php

                              Bei mir geht die Schleife sehr langsam... Bei nem Kumpel rennt sie ohne Probleme durch.... So siehts heute aus... Gestern wars bei mir auch mal schnell...

                              Kommentar

                              Lädt...
                              X