[Browser + PHP] Wird geöffnet ... timeout

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

  • [Browser + PHP] Wird geöffnet ... timeout

    Hallo zusammen,

    mein Skript ließt aus einer CSV Datei {[COLOR=orangered]while (!feof($fp)) {[/COLOR] die Daten ein und überträgt sie dann Zeile für Zeile in einer MySQL DB.

    Das ganze dauert ca. 30 Sekunden und klappt wunderbar.

    Einziges Problem ist, das der Internet Explorer trotz fertig abgearbeiteten Skripts weiterhin anzeigt das die Seite geladen wird.

    Also so z.b.:

    Seite http://www.haumichblau.de/skript.php wird geöffnet [||||||____]

    Tjo, hab ich mir gedacht guggste im Firefox nach, aber auch der zeigt das selbe an und läd und läd und läd...

    ---

    Anscheinend muss gibt es da irgendwie nen Timeout bei den Browsern, das die da nicht mehr weiterkommen.

    Hat(te) jemand ähnliche Probleme und nen Weg gefunden das zu umgehen, also das es mir am ende mein echo done; auspsuckt?

    Danke schon mal für die Hilfe.

    mfg, florian

  • #2
    wieso liest du mit feof zeile für zeile ein und nicht direkt mit file() in ein array das nach zeilen sortiert ist? wäre wesentlich einfacher. danach könntest du ein INSERT statement in einer foreach-schleife konstruieren (d.h. du fügst immer die values in eine variable rein) und schickst dann zum schluss ne query an die db. dann hast du genau 1 query im script. nur so als tipp...


    bist du denn sicher dass dein script überhaupt durchläuft?
    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


    • #3
      bist du denn sicher dass dein script überhaupt durchläuft?
      jo, hab die db einträge gecheckt. sind alle 5000 kunden (mit je 10 ver. zusatzdaten) komplett drinnen.


      Also ich mir ist noch was eingefallen, wenn ich zwischendurch ne echo Ausgabe einfüge, dann verfällt der browser in kein "timeout" (ich nenns mal so *g*). und gibt mir am ende auch den letzten echo Befehl "done" aus. sieht zwar sicher gut aus, aber muss auch ohne sowas gehen.


      Ich werd mir mal deine Lösung zu gemüte ziehen und posten wenn ich wieder was neues weiß.

      danke schon mal
      Zuletzt geändert von flo_urlaub; 19.01.2006, 20:52.

      Kommentar


      • #4
        irgendwie deprimierend das ich stundenlang versucht habe das zu lösen,
        und nun gehts so einfach innerhalb kürzester Zeit.

        PS Rechnendauer liegt bei 1-2 Sekunden... *snief*

        Danke dafür Shurakai!!!!

        Und hier noch der Code, damit sowas kein 2tes mal passiert *g*

        PHP-Code:
        <?php

        include("connect2db.inc.php");

        $lines file ('adressen.txt');

        foreach (
        $lines as $line_num => $line) {
            
            
        $spalte explode(";"$line);

            if (!empty (
        $spalte[1])) {
                
        $result mysql_query("INSERT INTO ........$spalte[1], etc....."); }    
        }

        echo 
        "fertig";
        ?>

        Kommentar


        • #5
          nochmal mein tip:

          du kannst über ein einziges insert-statement mehrere datensätze GLEICHZEITIG einfügen.


          Schau dir dazu am besten mal die INSERT-Syntax im mySQL-Handbuch an.

          Dann machst du einfach folgendes

          PHP-Code:
          $query 'INSERT INTO tabellenname (spalten ....)
                                                         VALUES'
          ;

          foreach (
          $array as $value)
          {
                   
          // hier dein explode
                   
          $query .= '(wert1, wert2, wert3 .....),';
          }
          // das letzte komma entfernen

          mysql_query($query); // es wird nur eine query abgesetzt anstatt 5000 ;) 
          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

          Lädt...
          X