is not a valid stream resource

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

  • is not a valid stream resource

    Hallo zusammen,

    ich hole per ftp Textfiles von einem Server um diese danch zu zerlegen und wichtige Auszüge mit mysql wegzuschreiben ...klappt auch wunderbar solange die Schleife nicht zu lang wird ...

    dann taucht bei folgendem Quellcodezeilen plötzlich folgende Fehlermeldung auf :

    suplied argument is not a valid stream resource

    Was kann das sein ?, geht im Prinzip schon...aber wenn die Anzahl der Textfiles zu groß wird gehts nicht mehr ... Danke Euch

    PHP-Code:

    $download 
    ftp_get($conn_id$fname$fnameFTP_BINARY);

    handle fopen($fname,"r");
    while (!
    feof($handle)) {
    $buffer fgets($handle);
    $array explode('|'$buffer);

    .... 

  • #2
    1. Redest du von $conn_id oder $handle?
    2. handle != $handle
    3. Gibt es zwischendurch auch mal ein explizites fclose()?

    Übrigens gehts auch mit
    $array = explode('|', file_get_contents($fname));

    Kommentar


    • #3
      Danke für die schnelle Antwort.

      also, Prinzip ist, ... File holen, zerlegen und fclose.
      danach nächstes File ..... in einer Schleife bis keine Files mehr vorhanden sind.
      Ging bisher prima ... aber jetzt bei über 1600 Files taucht die Fehlermeldung in Zeile 33 und 35 auf.

      zu 3.) ja, nach jedem File gibt es ein fclose($handle)
      zu 2.) verstehe leider nicht was Du meinst
      zu 1.)

      zeile 33 : while (!feof($handle)) {

      zeile 35 : $array = explode('|', $buffer);

      Kommentar


      • #4
        Original geschrieben von weinreich
        zu 2.) verstehe leider nicht was Du meinst
        *seufz* Augen aufmachen.

        handle vs. $handle

        ( ) Du erkennst einen Unterschied in den beiden Schreibweisen.
        ( ) Du lässt es lieber bleiben.


        Wenn du dein error_reporting auf E_ALL gestellt hättest (siehe Regeln, verflixt noch mal), dann hätte PHP dich gleich drauf hingewiesen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          $handle vorher prüfen

          hallo weinreich,

          der Fehler sagt dir das in $handle keine gültige Datei zu finden ist
          >> is not a valid stream resource

          bevor du das machst
          >>while (!feof($handle)) {

          solltest du mit "if($handle)" prüfen ob die Datei überhaupt vorhanden ist, sonst halt nicht laden, weil er sonst bei feof(...) knallt.

          gruss
          schicker03

          Kommentar


          • #6
            @topicstarter
            Du hast gar keinen $handle sondern nur einen handle. Oder war das nur ein Verschreiber hier im Forum ?
            Wenn die URL Wrapper bei dir aktiviert sind, dann würde ich die die vorgeschlagene Version mit explode() und file_get_contents() nahelegen, weil das weniger Code bedeutet.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Auch ohne allow_url_fopen bietet sich file_get_contents() an, schließlich liegen die Dateien nach ftp_get() lokal vor.

              Kommentar


              • #8
                sorry, das mit dem handle war ein Schreibfehler ...

                natürlich heisst es $handle = fopen ....

                mein Problem ist allerdings immer noch nicht gelöst.
                Gibt es sowas wie ein Pufferüberlauf ?
                Kann es sein dass mysql mit dem Wegschreiben der Daten nicht hinterher kommt ?
                Warum geht die Schleife erst 5 Minuten lang bevor die Fehlermeldung kommt ?

                seltsam, oder ?

                Kommentar


                • #9
                  also, ist schon etwas länger her, dafür konnte ich den Fehler einkreisen ...

                  Ich habe jetzt einen noch größeren Sever mit noch mehr files, da geht die Schleife keine 5 Minuten..da geht sie gar nicht.

                  der Fehler passiert bei dem $download = ftp_get($conn_id, $fname, $fname, FTP_BINARY); ...$handle bleibt leer ..., warum auch immer.

                  und zwar bei einem Directory bei dem die Fileanzahl über 2300 Dateien beträgt ..bei kleineren Directorys funktionierts einwandfrei.

                  Was ich jetzt brauche ist also entweder eine ftp_get Alternative oder irgendetwas anderes.

                  An der Anzahl der Files oder dem Server auf dem die Files liegen kann ich nichts machen, und habe ich auch keinen Einfluß drauf.

                  Jemand eine Idee ?

                  Kommentar


                  • #10
                    Was steht im Log des FTP-Servers?

                    Kommentar


                    • #11
                      tut mir leid, an das log file komme ich nicht.
                      Es ist ein externer Server bei dem ich lediglich Leserechte für ein Directory habe ... und da liegen Statistiken..das ist der Hintergrund.

                      Kommentar


                      • #12
                        hab gerade nochmal was getestet ...

                        das geht auch schon nicht .... allerdings nur bei Directory's mit einer
                        riesen Anzahl von Files ....bei kleinere Directory's funktioniert es ...

                        PHP-Code:
                        $contents ftp_nlist($conn_id"."); 
                        var_dump($contents); 
                        Gibt es da doch ein php Limit ?

                        Kommentar


                        • #13
                          liefert der ftp server evtl zu langsam die daten das sich php verrennt?

                          Kommentar


                          • #14
                            Original geschrieben von Trashar
                            liefert der ftp server evtl zu langsam die daten das sich php verrennt?
                            das weiß ich nicht ...

                            mein Problem ist jetzt dass ich eine Alternative brauche um alle Filenamen
                            auszulesen ...

                            oder kann ich eine Schleife darum machen ?
                            die ersten 100, dann die nächsten 100 usw. ?

                            Wie könnte das aussehen ?

                            Kommentar


                            • #15
                              Versuche erstmal noch ftp_pasv(), ftp_rawlist() und ftp_raw().

                              Kommentar

                              Lädt...
                              X