Seite 1 von 1

file_get_contents() oder fsockopen() ?

Verfasst: 15.01.2006 12:38
von Gast210225
Hallo,
ich meinem CMS soll eine Datei vom Server abgerufen werden. Eigentlich gibts da ja jetzt 2 Möglichkeiten:
  • file_get_contents('http://localhost/test/eine_datei.txt');
    • Nachteil: Geht nicht, wenn allow_url_fopen in der php.ini deaktiviert wurde...
    • Vorteil: Viel einfacher als fsockopen();
  • $pointer = fsockopen('http://localhost/');
    fputs($pointer, "GET /test/eine_datei.txt' HTTP/1.1\r\n");
    • Nachteil: Viel Aufwand
    • Geht auch, wenn allow_url_fopen deaktiviert wurde.
Was würdet ihr nehmen?

Viele Grüße,
Johannes

Verfasst: 15.01.2006 14:14
von PhilippK
Mit der Methode über die Sockets hast auf jeden Fall mehr Flexibilität. Es funzt auch mit PHP vor 4.3, du hast Kontrolle über den Timeout usw.
Allerdings würde ich per HTTP/1.0 abfragen - das ist i.d.R. schneller

Gruß, Philipp

Verfasst: 15.01.2006 15:48
von Gast210225
Hallo,
wie würde dann eine Abfrage mit HTTP/1.0 aussehen?

Edit:
das hier geht nicht (es wird "Error" augegeben)

Code: Alles auswählen

function get_file()
{
	if ( $pointer = fsockopen('localhost', 80, $errno, $errstr, 5) )
	{
		fputs($pointer, "GET / HTTP/1.0\r\n\r\n");

		while ( !feof($pointer) )
		{
			echo fgets($pointer, 1024);
		}
	}
	else
	{
		return false;
	}
}
Weiß jemand, was ich falsch mache?

Viele Grüße,
Johannes

Verfasst: 15.01.2006 17:21
von PhilippK
Dann lass dir doch mal die Fehlermeldung in $errno und $errstr ausgeben.

Gruß, Philipp

Verfasst: 15.01.2006 19:32
von Gast210225
Hmm, nun gehts...
aber ich hab beschlossen, dass ich nun doch get_file_contents() verwende... Das CMS läuft sowieso erst ab PHP 4.3...