Es kann vorkommen, dass die PHP-Funktion file_get_contents sehr langsam arbeitet. Dies liegt daran, dass file_get_contents standardmäßig keinen Connection HTTP-Header zum Webserver sendet. Dies hat zur Auswirkung, dass der Server denkt er hätte eine Keep-Alive-Verbindung. Dabei wird die TCP-Verbindung nicht direkt nach dem Abschluss des Downloads geschlossen, sondern erst 15 Sekunden später. Dieser Vorgang ist eigentlich dazu gedacht mehrere Dateien über die gleiche TCP-Verbindung zu übertragen. Im Falle von file_get_contents ist das in den meisten Fällen jedoch kontraproduktiv. Denn die Keep-Alive-Verbindung blockiert die Funktion, sodass die Ausführungszeit von file_get_contents sehr lange dauert.

Daher muss dem Webserver mitgeteilt werden, dass die Verbindung geschlossen werden muss, wenn der Download über file_get_contents abgeschlossen ist.

Die Lösung ist relativ einfach. Man übergibt dem Header folgende Parameter:

$params= stream_context_create(array('http' => array('header'=>'Connection: close\r\n')));
file_get_contents($url, false, $params);
0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.