Script braucht 515 Sekunden :(

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

  • Script braucht 515 Sekunden :(

    Hi,

    ich habe mit dem timestamp mal die Ausführungszeit des Scriptes überprüft. Sind 515 Sekunden. Ein bischen zuviel für mich.

    Es muss an folgenden Code liegen:

    PHP-Code:
    for($i=0;$i<1500;$i++)  // 1500 entspricht ungefähr den Datensätzen

    {
    $sql4="SELECT * FROM us_dax_frankfurt WHERE Date BETWEEN '$vonDate' AND '$bisDate' ORDER BY Close DESC";      // Nach Schlusskurs sortieren
    $connection4=mysql_connect("$host","$user","$password");
    mysql_select_db($database,$connection4);
    $result4 mysql_query($sql4,$connection4);


    Ist das zeitlich wirklich so problematisch die DB 1500 mal abzufragen?
    Welche andere möglichkeit habe ich um so eine Abfrage zu machen?

    Grüße
    cu LaHood

  • #2
    Es gibt bestimmt ne Anfrage zu 1500 Abfragen!

    HAMMER!!!

    $sql4="SELECT * FROM us_dax_frankfurt WHERE Date BETWEEN '$vonDate' AND '$bisDate' ORDER BY Close DESC";

    Ist diese Zeile immer so, oder was ändert sich da? Gib mal paar beispiele, wie die aussehen könnte (wenn du Werte statt Vars schreibst).

    Kommentar


    • #3
      warum machst du 1500 mal die gleiche abfrage?
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        das datum wird mittels between bestimmt sekündlich geprüft .. *kleiner scherz*

        wenn du eine abfrage an die gleiche tabelle machst, ist es quatch ca. 1.500 mal abzufragen. zumal in deinem comment steht, dass ca 1.500 datensätze vorhanden sind.

        mache EIN select auf die tabelle und lasse die ergebnisse mittels einer while-schleife weiterverarbeiten.

        ps. du hast wohl schon dein php umgebogen, dass er nicht nach 90sec abbricht ...

        [edit]
        meinte natürlich 30 sec....

        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Abgesehen davon, pfffoooooooaaaaaaaahhh, versuch mal den Connect String und die Datenbankauswahl außerhalb der Schleife zu legen. SAg dann bescheid, ob's schneller geworden ist und um wieviel.
          PHP-Code:
          <?PHP
          $connection4
          =mysql_connect("$host","$user","$password");
          mysql_select_db($database,$connection4);
          for(
          $i=0;$i<1500;$i++)  // 1500 entspricht ungefähr den Datensätzen
          {
             
          $sql4="SELECT * FROM us_dax_frankfurt WHERE Date BETWEEN '$vonDate' AND '$bisDate' ORDER BY Close DESC"
             
          $result4 mysql_query($sql4,$connection4);
          }
          ?>
          (Oder Du beginnst mit dem Skript bereits 8,5 Minuten vor Börsenschluß, dann bist Du mit dem Skript auch rechtzeitig fertig )
          Zuletzt geändert von hand; 07.01.2003, 21:51.

          Kommentar


          • #6
            Hä?
            wenn Du $i von 0 bis 1499 hochzählst, müsste das doch in der Schleife wieder irgendwo auftauchen?????
            Sonst ergibt die for-Schleife irgendwie keinen Sinn.
            Grüße an alle und weiterhin frohes Arbeiten

            Kommentar


            • #7
              Noch eingefallen:

              Was machst du wenn du 1600 Datensätze hast?? Änderst du das Script? Macht ne while()-Schleife nicht mehr sinn?

              Und nochmals:

              515 Sekunden

              Kommentar


              • #8
                Selten ein Thread mit so einer regen Teilnahme

                Kommentar


                • #9
                  Mal ernsthaft:

                  @LaHood: bist Du sicher, dass Du 1500 mal genau das gleiche machen willst???
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    @hand: Ist ja auch kurios!

                    Aber ich bezweifle eigentlich, dass LaHood nicht die While-Schleife kennt.

                    Kommentar


                    • #11
                      ich finds lustig....

                      ich will auch nicht nochmal auf dieses bild eingehen.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Das geht mal wieder Stark nach OOO!!!
                        Eben typisch Abraxax

                        Kommentar


                        • #13
                          also

                          wie Hand schon richtig bemerkt hat hat das ganze mit Aktien zu tun. Sinn und Zweck dieser Aktion ist folgendes. Ich möchte Filter erstellen die die historischen Aktienkurse nach meinen eigenen Vorstellungen durchsuchen.

                          Der Teil des Scriptes um den es gerade geht soll folgendes machen:

                          $n=200 //Bedeutet Zeitraum von 200 Tagen

                          Ich durchsuche seid dem ersten zeitlichen Datensatz + $n Tage ob an diesem Tag der aktuelle Kurs (Close) einen Höchstkurs hat im Vergleich zu den letzten $n Tagen.

                          Wenn dies der Fall ist soll in einem Aktienchart in dem Chart die Stelle markiert werden zum Bsp.

                          Ich hoffe die Abfrage wird dadurch klarer, ich werde nochmal die Variablen anders benennen, damit es vielleicht durchsichtiger wird:

                          PHP-Code:
                          if ($i $n)           //Hier ist $i von der Schleife
                          $aq =($i-$n);
                          $vonDate $ergebnis[$aq]['Date'];   //Dieser Wert kommt von einer anderen DB Abfrage weiter oben
                          $bisDate $ergebnis[$i]['Date'];

                          $sql4="SELECT * FROM us_dax_frankfurt WHERE Date BETWEEN '$vonDate' AND '$bisDate' ORDER BY Close DESC";      // Nach Schlusskurs sortieren
                          $connection4=mysql_connect("$host","$user","$password");
                          mysql_select_db($database,$connection4);
                          $result4 mysql_query($sql4,$connection4);
                            
                          $ergebnis4[1]=mysql_fetch_array($result4); 
                                    
                          if (
                          $ergebnis[$i]['Close'] > $ergebnis4[1]['Close'])
                          ImageFilledEllipse($imgStat$x_1$y_177$colRed); }
                           } 
                          Warum das ganze 1500 mal durchlaufen muss ist hoffentlich jetzt ersichtlich. Ich habe einen Aktienchart mit zur Zeit ca. 1700 Tagen (-$n = 1500).
                          Da ich meinen Filter prüfen möchte, mache ich das natürlich mit historischen Daten und nicht mit Bargeld welches sonst bald jemand anderem gehören würde

                          Grüße
                          cu LaHood

                          Kommentar


                          • #14
                            @tobi
                            mach dich nur lustig...
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              ist es nicht besser EINE abfrage zu machen, diese infos in ein array zu laden und dieses zu durchsuchen?
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X