jobo: CSV-Daten von anderem Server nutzen

Hallo,

auf dem einen Server lese ich CSV-Daten mit fopen() und fgetcsv(). Wie komme ich denn an die Daten, wenn ich nicht direkt übers Dateisystem zugreifen kann? fopen() per http geht ja wohl nicht. Allgemeiner formuliert: wie komme ich denn mit PHP überhaupt an Daten eines anderen Servers? Vielleicht schon gleich in serialisierter Form zB.

Gruß

jobo

  1. auf dem einen Server lese ich CSV-Daten mit fopen() und fgetcsv(). Wie komme ich denn an die Daten, wenn ich nicht direkt übers Dateisystem zugreifen kann? fopen() per http geht ja wohl nicht.

    Sicher - aber nur mit allow_url_fopen

    Allgemeiner formuliert: wie komme ich denn mit PHP überhaupt an Daten eines anderen Servers?

    fsockopen sofern sie per HTTP erreichbar sind.

    Vielleicht schon gleich in serialisierter Form z.B.

    Ohne zutun des anderen Servers garnicht.

    1. Hallo,

      Vielleicht schon gleich in serialisierter Form z.B.

      Ohne zutun des anderen Servers garnicht.

      Klar, aber das wäre ja die einfachste Übung, ein kleines Script "spitOutCsv.php" was die serialisierten Daten ausechoen würde. Aber wenn ich vom anderen Server darauf dann per http-request zugreife müsste ich dem Getter-Skript ja irgendwie (eval?) sagen, dass das serialisierte Daten sind und wie er damit umgehen soll. Was zB. macht PHP mit dem HTTP-Headern, also wenn es per HTTP eine Seite von wo-auch-immer holt?

      Gruß

      jobo

      1. Klar, aber das wäre ja die einfachste Übung, ein kleines Script "spitOutCsv.php" was die serialisierten Daten ausechoen würde. Aber wenn ich vom anderen Server darauf dann per http-request zugreife müsste ich dem Getter-Skript ja irgendwie (eval?) sagen, dass das serialisierte Daten sind und wie er damit umgehen soll.

        unserialize() ist dir ein Begriff?

        Was zB. macht PHP mit dem HTTP-Headern, also wenn es per HTTP eine Seite von wo-auch-immer holt?

        fopen() ignoriert sie afaik während fsockopen() (gelesen jeweils mit fgets) die Header anzeigt - aber diese bei Bedarf zu entfernen ist kein Problem.

        1. Hallo,

          unserialize() ist dir ein Begriff?

          Ja.

          fopen() ignoriert sie afaik

          ja:

          https://forum.selfhtml.org/?t=191673&m=1278306

          Gruß

          jobo

  2. Hallo,

    [..] Allgemeiner formuliert: wie komme ich denn mit PHP überhaupt an Daten eines anderen Servers? Vielleicht schon gleich in serialisierter Form zB.

    Allgemein formuliert: Wenn die Daten über ein netzwerkfähiges Protokoll bereitgestellt wurden. Z.B. IO-Socket oder HTTP o.a.

    Hotte

    1. Hallo,

      Allgemein formuliert: Wenn die Daten über ein netzwerkfähiges Protokoll bereitgestellt wurden. Z.B. IO-Socket oder HTTP o.a.

      Bei IO-Socket spuckt mir Google immer nur PERL-Klassen aus IO::Socket. HTTP könnte ich als String in eine Variable packen und dann unserializen, oder? Mal probieren.

      Gruß

      jobo

      1. Hallo,

        Bei IO-Socket spuckt mir Google immer nur PERL-Klassen aus IO::Socket. HTTP könnte ich als String in eine Variable packen und dann unserializen, oder? Mal probieren.

          
        $fh = fopen("http://example.com/tests/lila.php","r");  
        while($line = fgets($fh)) {  
        	var_dump(unserialize($line));  
        }  
        
        

        liefert:

        array(1) {
          ["li"]=>
          string(2) "la"
        }

        wenn in tests/lila.php

          
        	$myArray["li"]="la";  
        	echo serialize($myArray);  
        
        

        seht. Fein das.

        Gruß

        jobo

        1. Hallo,

          zu früh gefreut, wenn in den Werten Absätze sind. Muss man den ganzen Auswurf einlesen, wie geht denn das?

          Gruß

          jobo

          1. Hallo,

            zu früh gefreut, wenn in den Werten Absätze sind. Muss man den ganzen Auswurf einlesen, wie geht denn das?

              
            while($line = fgets($fh)) {  
            	$mySerVar .= $line;  
            }  
            
            

            Gruß

            jobo