Hi,
ich versuche gerade mit PHP HTTP Requests zu machen, was (prinzipiell) auch funktioniert. Die Daten werden vom stream gelesen und sind auch das, was ich erwarte - allerdings belibt das Script dann entweder in feof oder fgets hängen und sitzt dort seine max_execution_time ab.
PHP
// code
$request="GET pfad HTTP/1.1"; /* und der ganze kram */
$socket=fsockopen($host_url, 80, $errno, $errstr, 20);
if (!$socket) {
$this->error=$errstr." (Level ".$errno.")";
return false;
}
fwrite($socket, $request);
$response="";
stream_set_blocking($socket, false);
stream_set_timeout($socket, 2);
while (!feof($socket)) {
$x=fgets($socket, 128);
$response.=$x;
// Baue ich hier ein "echo $x"; ein, kommt auch die komplette Ausgabe beim Browser an
}
fclose($socket);
Alles anzeigen
stream_set_timeout und ini_set("default_socket_timeout") zeigen auch keinerlei Wirkung... Jemand ne Idee, woran das liegen könnte?
P.S.: In Java gibst ja InputStream.available (hier ==feof). Allerdings gibt das in Java false zurück, wenn der Server seine Ausgabe fertig hat (sprich den stream schliest). Gibts da in PHP keine Möglichkeit?