Ankündigung

Einklappen
Keine Ankündigung bisher.

XML-Datei direkt von FTP-Quelle parsen

Einklappen

Neue Werbung 2019

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

  • XML-Datei direkt von FTP-Quelle parsen

    Ich möchte aus einer PHP Funktion von einem ftp-server ein XML auslesen, dieses Parsen und die Informationen auf meiner Homepage ausgeben.

    Zur Zeit wird bei einem Homepagebesuch die XML-Datei via ftp_get gedownloadet, zwischengespeichert, geöffnet, geparst und dann ausgegeben.

    Nun schaue ich nach einer alternativen Variante, diesen Vorgang zu vereinfachen und die XML-Datei ohne Zwischenspeicherung darzustellen.

    Bin dankbar für jeden Gedankensnstoss...


  • #2
    Geht fopen("<protokoll>://<username>:<password>@<ip>:<port>/<ordner>/<datei>", "r") denn nicht?

    Kommentar


    • #3
      naja parsen kannst du nur wenn du ein komplettes dokument hast, naja -> zwishcenspeichern weglassen und im speicher des php-scripts halten ?

      imho, ne art cache-funktion ? für -> nicht erreichbarkeit oder wenn das dokument sich nciht verändert hat.

      mfg
      robo47
      robo47.net - Blog, Codeschnipsel und mehr
      | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

      Kommentar


      • #4
        Ok, ja fopen funktioniert. Merci

        Jetzt würde mich noch interessieren was passiert, wenn die Seite nicht verfügbar ist.
        Gibt es eine Möglichkeit ein Timeout für fopen zu setzen?
        Da ja das laden meiner Homepage verzögert wird...

        In diesem Fall würde ich dann bei einer Zugriffszeit von > x Sekunden eine frühere Version des XMLs parsen und ausgeben.

        Kommentar


        • #5
          Hm dazu müsstest du ja einen parallelen Thread haben, der die Zeit mist und den Thread mit der FTP-Verbindung dann kappt, wenns zu lange dauert. Gibts aber so direkt bei PHP nicht.

          Höchstens den Timeout für die Skriptausführung runtersetzen und diesen dann irgendwie abfangen.

          Klingt alles nicht nach dem Wahren. Geht anpingen denn irgendwie?

          Kommentar


          • #6
            wenn du auf JS-basis vieleicht mit arbeitest, ne preload anzeige einblenden, dann schließt der user den browser vileihct nicht gleich.

            naja wie sieht es denn aus, wie oft werden die daten aktualisiert ?
            vieleicht alles lokal cachen, einmla /mehrmals täglich ein update ? via cronjob oder ähnlichem ?
            robo47.net - Blog, Codeschnipsel und mehr
            | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

            Kommentar


            • #7
              @Zergling
              Naja das "Timeout für die Skriptausführung" lass ich besser sein :wink:

              Für eine Socketverbindung gibts ja ne Funktion socket_set_timeout(). Vieleicht gibts das auch für fopen()

              Theoretisch müsste man ja auch eine Verbindung mit fsockopen hinkriegen und so könnte man mit dem Timeout arbeiten?!

              @robo47
              Oje, JS, auf solche Mittel möchte ich nur im Notfall zurückgreifen...

              Die Daten werden ca. alle 2h aktualisiert und ändern sich nicht allzu sehr ausser bei Hochwasser (Wasserstand).

              hmm, Cronjob wäre das ideale, allerdings habe ich keine entsprechende Serverrechte.

              Kommentar


              • #8
                Zitat von Radisli
                Für eine Socketverbindung gibts ja ne Funktion socket_set_timeout(). Vieleicht gibts das auch für fopen()
                [..]
                hmm, Cronjob wäre das ideale, allerdings habe ich keine entsprechende Serverrechte.
                Wußte ich garnicht.

                Aber für cronjobs: http://www.cronjob.de

                Kommentar


                • #9
                  @Zergling
                  Zumindest steht das mit dem Timeout hier:
                  http://php.benscom.com/manual/de/fun...et-timeout.php

                  Das mit dem anpingen könnte einen Ansatz sein...
                  Habe mal folgendes vor mein Script gehängt:

                  PHP-Code:
                  <?php
                  if(@fsockopen($ftp_server$port$errno$errstr.5)) {
                      [....]
                  }
                  ?>
                  Mit .5 Sekunden Timeout...
                  Ist nur ein wenig schwierig zum Testen

                  Kommentar


                  • #10
                    Wieso? Nimm halt ne Adresse die es nicht gibt, wenn der Server grad online ist.

                    Kommentar


                    • #11
                      @Zergling
                      Also auf das bin ich auch selber gekommen ...

                      Es geht mehr darum zu Testen wie der Timeout reagiert wenn der FTP-Server down, ausgelastet, überlastet ist oder sonst etwas unvorhergesehenes passiert.

                      Trotzdem merci

                      Aber nichts ist 100% sicher...

                      Kommentar

                      Lädt...
                      X