Mario Lorenz: große gzip-komprimierte Daten von Server empfangen

Hallo,

wenn ich einen bestimmten Link aufrufe, erhalte ich als Ergebnis einen GZ-komprimierten Datenstrom zurückgeliefert.

Ich möchte diesen Datenstrom gleich in eine Datei umleiten.
Bei meinen Recherchen bin ich immer wieder auf die Funktion "fsockopen" gekommen.

Will ich sie aber verwenden bekomme ich immer die Fehlermeldung:

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: gethostbyname failed in \download.php on line ...

Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.server_mit_file.de/export.php:80 in \download.php on line ...

Hier das Script:

  
$file_write = fopen("test.gz","wb");  
$file_read = fsockopen('http://www.server_mit_file.de/export.php',80, $errno, $error,300) OR die($error."(".$errno.")");  
fwrite($file_read, "HEAD / HTTP/1.1\r\n");  
fwrite($file_read, "\r\n"); // Request beenden  
while(!feof($file_read)) {  
  $buffer = fread($file_read, 1024);  
  fwrite($file_write,$buffer,strlen($buffer));  
}  
fclose($file_read);  
fclose($file_write);  

Das nächste Problem wird sein, das die gesendete Datei unter Umständen bis zu 10MB groß sein kann. Wie kann ich einen Workarround schaffen, der so ähnlich wie bei http://www.mysqldumper.de funktioniert, wo sich das Script immer wieder selbst aufruft, bis die Datei verarbeitet wurde, um somit dem Timeout zu entgehen?

Vielen Dank für Eure Hilfe,

Gruss, Mario

  1. hi,

    Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: gethostbyname failed in \download.php on line ...
    ...
    $file_read = fsockopen('http://www.server_mit_file.de/export.php',80, $errno, $error,300) OR die($error."(".$errno.")");

    Vielleicht solltest du die Funktion mal mit vernünftigen Parametern aufrufen.

    Nein, 'http://www.server_mit_file.de/export.php' ist kein Hostname.

    fwrite($file_read, "HEAD / HTTP/1.1\r\n");

    Du willst nicht HEAD, sondern GET (oder POST, aber vermutlich eher nicht).

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      vielen Dank ich glaube ich habe es verstanden. Ich werde die Lösung der Vollständigkeit halber morgen posten.

      Gruss,

      Mario