Hi,
ich möchte einen simplen REST-Client bauen. Der Client soll dabei möglichst wenig Zeit für einen Request brauchen. Auch die Rückgabe des Servers brauche ich nicht.
Deshalb kann ich ja theoretisch einfach den Code aus der Doku zu [MAN]stream_socket_client[/MAN] verwenden:
Wie ihr seht, hab ich das Lesen der Antwort einfach auskommentiert. Funktioniert wunderbar. Auch wenn das Serverskript 3 Sekunden braucht, wartet der Client nicht.
Jetzt verstehe ich aber nicht ganz den Zusammenhang zu [MAN]stream_set_blocking[/MAN]. Das scheint ja das gleiche zu bewirken. Aber wozu brauche ich das dann, wenn ich doch das Lesen auslassen kann?
Und dann gibts bei stream_socket_client auch noch den Flag STREAM_CLIENT_ASYNC_CONNECT. Was bewirkt der dann?
Viele Grüße,
Christoph
ich möchte einen simplen REST-Client bauen. Der Client soll dabei möglichst wenig Zeit für einen Request brauchen. Auch die Rückgabe des Servers brauche ich nicht.
Deshalb kann ich ja theoretisch einfach den Code aus der Doku zu [MAN]stream_socket_client[/MAN] verwenden:
PHP-Code:
<?php
$fp = stream_socket_client("tcp://localhost:80", $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, "GET /server.php HTTP/1.0\r\nHost: localhost\r\nAccept: */*\r\n\r\n");
// while (!feof($fp)) { echo fgets($fp, 1024); }
fclose($fp);
}
Jetzt verstehe ich aber nicht ganz den Zusammenhang zu [MAN]stream_set_blocking[/MAN]. Das scheint ja das gleiche zu bewirken. Aber wozu brauche ich das dann, wenn ich doch das Lesen auslassen kann?
Und dann gibts bei stream_socket_client auch noch den Flag STREAM_CLIENT_ASYNC_CONNECT. Was bewirkt der dann?
Viele Grüße,
Christoph
Kommentar