Php Abfrage Geschwindigkeit reduzieren

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

  • #16
    Da musst du mit Outputbuffering arbeiten. Nach jedem durchlauf musste dann den Buffer ausgeben.

    Schau dir dazu mal ob_start sowie die anderen Funktionen wie ob_flush etc. an
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #17
      genau, so soll das sein...

      abfrage1 läuft
      abfrage1 fertig

      ausgabe abfrage1

      abfrage2 läuft
      abfrage2 fertig

      ausgabe abfrage1
      ausgabe abfrage2

      das soll während der abfrage, immer schön nach und nach gelistet werden, was fertig ist... Ich weiß nicht, wie ich das anders erklären soll.

      Ich starte das Script, dabei ist die Ausgabe natürlich komplett leer und wenn die ganzen Daten abgefragt wurden, muss ich z.b. 10 ausgaben haben, alle schön untereinander, wobei sie nach und nach gelistet werden...

      Hoffe, du verstehst mich

      Gruß aus Berlin
      Robert

      Kommentar


      • #18
        Darf ich eigentlich mal fragen wieso du das nicht per DB machen möchtest? Wieso denn so kompliziert?
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar


        • #19
          Warum einfach wenn auch kompliziert, nein im Ernst ich will einfach nur mal Testen, ob man damit einiges anstellen kann... Wie oben schon beschrieben, ich will wenn möglich, webseite durchsuchen, als kleine suchmaschiene, für meine Seite... Nun will ich wenn z.B. seite A durchsucht wird, gleich nach der Suche die Beschreibung von Seite A ausgeben, wobei gleich die Abfrage für Seite B läuft, wenn Seite B fertig ist, soll mir auch der Titel von Seite B angeigt werde und immer so weiter, damit ich einen kleinen Überblick habe, was er macht...

          Ausgabe z.B.

          Seite Titel
          A Test
          B Seite B

          usw...

          Danke Robert

          Kommentar


          • #20
            Ja klar, testen kann man, aber doch nicht im Produktiveinsatz...?

            Das kannste auch wunderbar mit der DB machen... auch das mit dem ausgeben hintereinander!
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar


            • #21
              Ja das, weiß ich doch, dass ich das kann... Aber ich will das verwenden, für Seiten wo ich nicht an DB komme,
              was ja eigentlich so sein sollte, wenn ich die Seite nicht kenne oder ?

              Also ich habe das jetzt mal versucht aber irgendwie,
              bekomme ich immer wieder gleich Ergebniss, ob_start() klappt nicht so, wie es soll...

              Die Abfrage, läuft ja in einer while und nun nur noch die Ausgabe, dann bin ich durch... Aber es klappt net...

              Kannst du mir mal ein Bespiel geben???

              Ich habe probiert, die Anzeige mit in die Abfrage Schleife zu nehmen
              aber da wird mir das auch erst angezeigt, wenn die komplette
              Abfrage beendet ist... Das will ich ja aber ebe nicht, er soll auch die Ausgabe nach jeder Abfrage aktualisieren...
              Ich hoffe, wir reden nicht aneinader vorbei?!

              Gruß Robert
              Zuletzt geändert von RobertRitschel; 29.06.2005, 16:05.

              Kommentar


              • #22
                wie issn dein ansatz?
                Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                var_dump(), print_r(), debug_backtrace und echo.
                Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                Kommentar


                • #23
                  Also, ich werde noch einmal den gesammten Code posten und an der Stelle, wo die Ausgabe erfolgen soll, mache ich Mein Kommentar
                  PHP-Code:
                   <?php
                  $update_query 
                  tep_db_query("select products_model, products_price, 
                  products_last_modified from "
                   
                  TABLE_PRODUCTS " where products_status = 1");
                  while (
                  $update tep_db_fetch_array($update_query)) {

                  $price_old $update['products_price'];
                  $id $update['products_model'];
                  $last_update $update['products_last_modified'];

                  // Der Link zur Suche
                  $URL "http://xxx.de/id=4441225";

                  // Start der Auslese
                  $Start 'Art.Nr.';
                  $End "<td align=right><input type=text name=";

                  // Öffnen der Seite
                  $file fopen("$URL""r");

                  // Lesen der Seite
                  $r file_get_contents($URL);

                  // Suchen, wonach gesucht werden soll

                  $stuff eregi("$Start(.*)$End"$r$content);

                  // Zeichen ersetzen
                  $content[1] = str_replace("."""$content[1]);
                  $content[1] = str_replace(",""."$content[1]);
                  $content[1] = str_replace("&nbsp;EUR"""$content[1]);
                  $content[1] = str_replace("&nbsp;"""$content[1]);
                  $content[1] = str_replace("<br>"""$content[1]);
                  $content[1] = str_replace("<td align=right>"""$content[1]);
                  $content[1] = str_replace("</td>"""$content[1]);
                  $content[1] = str_replace("/span>"""$content[1]);
                  $content[1] = str_replace("<td>"""$content[1]);


                  fclose($file);
                  $stuff $content[1];

                  // Werte Speichern
                  $items explode("[LINES]",$stuff);

                  $count "0";

                  $rest substr($stuff18); 
                  $rest1 substr($stuff1015); 
                  $id $rest;
                  $price $rest1;    
                  $db_price $price 116 100;

                  }
                  ?>
                  // Genau hier, soll dann Zeile für Zeile nach jeder
                  erfolgten Abfrage erscheinen! echo Artikelnummer
                  Jetzt verständlicher, sonst weiß ich auch nicht mehr, was ich noch machen soll... Vielleicht, kann ich nicht schreiben, was ich meine... *gg*

                  Gruß aus Berlin
                  Zuletzt geändert von RobertRitschel; 29.06.2005, 16:05.

                  Kommentar


                  • #24
                    Hallo nochmal, kann mir denn keiner Helfen, meine Tabelle, die ich habe in Realtime zu füllen, da muss doch einen Weg geben und wenn es ein ifram ist oder der gleichen... Bitte, sonst komme ich nicht weiter...

                    Gruß aus Berlin
                    Robert

                    Kommentar


                    • #25
                      Ich habe deine WHILE-Schleife mal etwas reduziert. Da war viel drin, was keinen erkennbaren Sinn hatte bzw. schlichtweg falsch war.
                      Ich hoffe sie macht noch immer was sie soll, ohne Testdaten kann ich es ja nicht prüfen.
                      PHP-Code:
                      <?php
                      $sql 
                      "SELECT products_model, products_price, products_last_modified "
                            
                      ."FROM " TABLE_PRODUCTS " WHERE products_status = 1";
                      $update_query tep_db_query($sql);
                      while (
                      $update tep_db_fetch_array($update_query)) {
                          
                      $r file_get_contents('http://xxx.de/id=4441225');
                          
                      eregi("Art\.Nr\.(.*)<td align=right><input type=text name="$r$content);
                          
                      $search = array(
                              
                      '.',
                              
                      ',',
                              
                      '&nbsp;EUR',
                              
                      '&nbsp;',
                              
                      '<br>',
                              
                      '<td align=right>',
                              
                      '</td>',
                              
                      '</span>',
                              
                      '<td>'
                          
                      );
                          
                      $stuff str_replace($search''$content[1]);
                          
                      $items explode("[LINES]"$stuff);
                          
                      $id substr($stuff18); 
                          
                      $price substr($stuff1015); 
                          
                      $db_price $price 116 100;

                          
                      // Hier die Ausgabe! (In $update hast du die Werte aus der DB.)
                          
                      echo 'whatever you want';
                      }
                      ?>

                      Kommentar


                      • #26
                        Hallo, vielen Dank nur leider macht sie jetzt nicht mehr, dass was sie soll...

                        Ich denke, dass meine abfrage nicht wirklich sinnvoll aussieht aber so funktioniert sie...Ich musste mich ja ein wenig an dem Quelltext halten, damit ich richtigen Werte bekommen.... Trotzdem, vielen Dank für dein Mühe... Ich muss mal gucken, dass ich das mit dem Array irgendwie in meine Code bekomme, denn dann habe ich ja das, was ich will, glaube ich vielleicht

                        Gruß und großes Dankeschön aus Berlin
                        Robert

                        Kommentar


                        • #27
                          Gib uns doch mal den Link auf die Seite, die du durchsuchst und sag was du aus der Seite überhaupt rausziehen willst.

                          Kommentar


                          • #28
                            mal zu deiner ausgabe

                            läd die seite immer wieder neu??
                            weil wenn net dann hast du ausgabe 1 irgendwann 100mal auf der seite stehn... denkfehler...da du ja wahrscheinlich bei der abfrage mehr als ein ergebnis bekommst is doch for immer ganz net
                            Die Milch bleibt ranzig!

                            Kommentar


                            • #29
                              Hallo und vielen Dank, für die ganzen Hilfestellungen...

                              Zu RanzigeMilch, nein, die Seite wird nicht immer neu geladen.
                              Und trotzdem, soll nach jeder erfolgten Abfrage, die Tabelle immer mit dem Ergebniss der letzten Abfrage fortlaufend gefüllt werden.
                              Ich hatte schon die Idee, das über ein iframe zu machen aber das wird ja dann auch immer wieder neu aktutalisiert, was ich nicht wirklich will...

                              Vielleich hat noch einer die Idee überhaupt. Es sollte auch bitte so sein, dass mein Code, erhalten bleibt, so wie ich die Bemühungen schätze, für neu geschrieben Scripte, funktionierte die letzte Möglichkeit leider nicht.
                              Da die Seite, die ich durchsuche ja auch eine php / html Seite ist, muss ich ja irgendwie, die für mich wichtigen Stellen heraussuchen und Filtern, was auch perfekt klappt, nur eben die Tatsache, dass ich die Tabelle nicht fortlaufend nach jeder Abfrage füllen kann...

                              Greets and big thanks @ all

                              Robert

                              Kommentar


                              • #30
                                Hmm,

                                du willst also nach jedem Schleifendurchlauf eine Zeile angezeigt bekommen und zwar sofort, aber du bekommst immer alles auf einmal präsentiert und das erst, wenn das Script beendet ist, oder? Hab ich das jetzt richtig verstanden?

                                Dieses Verhalten kannst evtl. nicht unterbinden, selbst flush() kann nur versuchen den Ausgabepuffer zu leeren, wann der Server aber letztendlich zum Client die Daten sendet, scheint dabei aber immer noch ihm überlassen zu sein.

                                Das einzige womit ich ihn überreden konnte, die Ausgabe sofort zu senden, war hinter jeder gewünschten Ausgabe ein Kilobyte Leerzeichen hinterherzuschicken. Dadurch läuft scheinbar der Ausgabepuffer über und wird dann zwangsweise geleert.

                                Probier mal sowas in der Schleife mitzuschicken:

                                echo str_repeat(" ",1024);
                                flush();

                                Die Leerzeichen werden in der Regel im Browser ignoriert.
                                Hat bei mir geklappt, keine Ahnung ob's dafür ne korrektere Lösung gäbe.
                                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

                                Lädt...
                                X