diff --git a/reference/stream/functions/stream-socket-server.xml b/reference/stream/functions/stream-socket-server.xml
new file mode 100644
index 000000000..e28edbf69
--- /dev/null
+++ b/reference/stream/functions/stream-socket-server.xml
@@ -0,0 +1,231 @@
+
+
+
+
+
+ stream_socket_server
+ Erstellt einen Internet- oder Unix-Domain-Server-Socket
+
+
+ &reftitle.description;
+
+ resourcefalsestream_socket_server
+ stringaddress
+ interror_code&null;
+ stringerror_message&null;
+ intflagsSTREAM_SERVER_BIND | STREAM_SERVER_LISTEN
+ resourcenullcontext&null;
+
+
+ Erstellt einen Stream- oder Datagramm-Socket auf der angegebenen
+ address.
+
+
+ Diese Funktion erstellt lediglich einen Socket; um Verbindungen
+ anzunehmen, ist stream_socket_accept zu verwenden.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ address
+
+
+ Der Typ des erstellten Sockets wird durch den Transport bestimmt, der
+ mittels der Standard-URL-Formatierung angegeben wird: transport://target.
+
+
+ Für Internet-Domain-Sockets (AF_INET) wie TCP und UDP sollte der
+ target-Anteil des Parameters
+ remote_socket aus einem
+ Hostnamen oder einer IP-Adresse bestehen, gefolgt von einem Doppelpunkt und einer Portnummer. Für
+ Unix-Domain-Sockets sollte der target-Anteil auf
+ die Socket-Datei im Dateisystem verweisen.
+
+
+ Je nach Umgebung sind Unix-Domain-Sockets möglicherweise nicht verfügbar.
+ Eine Liste der verfügbaren Transporte kann mittels
+ stream_get_transports abgerufen werden. Siehe
+ für eine Liste der eingebauten Transporte.
+
+
+
+
+ error_code
+
+
+ Sind die optionalen Argumente error_code und error_message
+ vorhanden, werden sie so gesetzt, dass sie den tatsächlichen, auf Systemebene
+ aufgetretenen Fehler in den systemnahen Aufrufen socket(),
+ bind() und listen() angeben. Ist
+ der in error_code zurückgegebene Wert
+ 0 und gibt die Funktion &false; zurück, so ist dies ein
+ Hinweis darauf, dass der Fehler vor dem Aufruf von bind()
+ aufgetreten ist. Dies ist höchstwahrscheinlich auf ein Problem bei der Initialisierung des Sockets zurückzuführen.
+ Es ist zu beachten, dass die Argumente error_code und
+ error_message stets als Referenz übergeben werden.
+
+
+
+
+ error_message
+
+
+ Siehe die Beschreibung von error_code.
+
+
+
+
+ flags
+
+
+ Ein Bitmaskenfeld, das auf eine beliebige Kombination von Socket-Erstellungs-Flags
+ gesetzt werden kann.
+
+
+
+ Für UDP-Sockets muss STREAM_SERVER_BIND als
+ Parameter flags verwendet werden.
+
+
+
+
+
+ context
+
+
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Gibt den erstellten Stream zurück oder &false; im Fehlerfall.
+
+
+
+
+ &reftitle.changelog;
+
+
+
+
+ &Version;
+ &Description;
+
+
+
+
+ 8.0.0
+
+ context ist jetzt nullbar.
+
+
+
+
+
+
+
+
+ &reftitle.examples;
+
+
+ Verwendung von TCP-Server-Sockets
+
+\n";
+} else {
+ while ($conn = stream_socket_accept($socket)) {
+ fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");
+ fclose($conn);
+ }
+ fclose($socket);
+}
+?>
+]]>
+
+
+
+
+ Das folgende Beispiel zeigt, wie man sich als Zeitserver verhält, der auf
+ Zeitabfragen antworten kann, wie sie in einem Beispiel von stream_socket_client gezeigt werden.
+
+
+ Die meisten Systeme erfordern Root-Zugriff, um einen Server-Socket auf einem Port
+ unterhalb von 1024 zu erstellen.
+
+
+
+ Verwendung von UDP-Server-Sockets
+
+
+
+]]>
+
+
+
+
+
+
+ &reftitle.notes;
+ &ipv6.brackets;
+
+
+
+ &reftitle.seealso;
+
+ stream_socket_client
+ stream_set_blocking
+ stream_set_timeout
+ fgets
+ fgetss
+ fwrite
+ fclose
+ feof
+ Curl-Erweiterung
+
+
+
+
diff --git a/reference/stream/functions/stream-wrapper-unregister.xml b/reference/stream/functions/stream-wrapper-unregister.xml
new file mode 100644
index 000000000..bc1b637a5
--- /dev/null
+++ b/reference/stream/functions/stream-wrapper-unregister.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+ stream_wrapper_unregister
+ Hebt die Registrierung eines URL-Wrappers auf
+
+
+ &reftitle.description;
+
+ boolstream_wrapper_unregister
+ stringprotocol
+
+
+ Ermöglicht das Deaktivieren eines bereits definierten Stream-Wrappers. Sobald der Wrapper
+ deaktiviert wurde, kann er mit einem benutzerdefinierten Wrapper mittels
+ stream_wrapper_register überschrieben oder später mit
+ stream_wrapper_restore wieder aktiviert werden.
+
+
+
+ &reftitle.parameters;
+
+
+
+ protocol
+
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.success;
+
+
+
+
+
+
diff --git a/reference/stream/streamwrapper/dir-readdir.xml b/reference/stream/streamwrapper/dir-readdir.xml
new file mode 100644
index 000000000..54176aa5b
--- /dev/null
+++ b/reference/stream/streamwrapper/dir-readdir.xml
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+ streamWrapper::dir_readdir
+ Liest einen Eintrag aus einem Verzeichnis-Handle
+
+
+
+ &reftitle.description;
+
+ publicstringboolstreamWrapper::dir_readdir
+
+
+
+ Diese Methode wird als Reaktion auf readdir aufgerufen.
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Sollte einen string zurückgeben, der den nächsten Dateinamen darstellt, oder
+ &false;, falls es keine nächste Datei gibt.
+
+
+
+ Die Rückgabe von true oder false hat dieselbe
+ Wirkung und signalisiert, dass es keine nächste Datei gibt. Von der Rückgabe von
+ true wird jedoch abgeraten, und stattdessen sollte false
+ verwendet werden, um diesen Zustand zu signalisieren.
+
+
+
+
+ Ein nicht-boolescher Rückgabewert wird in einen string umgewandelt.
+
+
+
+
+
+ &reftitle.errors;
+ &userstream.not.implemented.warning;
+
+
+
+ &reftitle.examples;
+
+
+ Auflisten von Dateien aus tar-Archiven
+
+fp = fopen($path, "rb");
+ return true;
+ }
+
+ public function dir_readdir() {
+ // Den Header für diesen Eintrag extrahieren
+ $header = fread($this->fp, 512);
+ $data = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1filetype/a100link/a100linkedfile", $header);
+
+ // Den Dateinamen und die Dateigröße kürzen
+ $filename = trim($data["filename"]);
+
+ // Kein Dateiname? Wir sind am Ende des Archivs angelangt
+ if (!$filename) {
+ return false;
+ }
+
+ $octal_bytes = trim($data["size"]);
+ // Die Dateigröße ist in Oktetten definiert
+ $bytes = octdec($octal_bytes);
+
+ // tar rundet Dateigrößen auf ein Vielfaches von 512 Bytes auf (mit Nullen gefüllt)
+ $rest = $bytes % 512;
+ if ($rest > 0) {
+ $bytes += 512 - $rest;
+ }
+
+ // Über die Datei hinwegspringen
+ fseek($this->fp, $bytes, SEEK_CUR);
+
+ return $filename;
+ }
+
+ public function dir_closedir() {
+ return fclose($this->fp);
+ }
+
+ public function dir_rewinddir() {
+ return fseek($this->fp, 0, SEEK_SET);
+ }
+}
+
+stream_wrapper_register("tar", "streamWrapper");
+$handle = opendir("tar://example.tar");
+while (false !== ($file = readdir($handle))) {
+ var_dump($file);
+}
+
+echo "Rewinding..\n";
+rewind($handle);
+var_dump(readdir($handle));
+
+closedir($handle);
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ readdir
+
+
+
+
+
+
+
diff --git a/reference/stream/streamwrapper/url-stat.xml b/reference/stream/streamwrapper/url-stat.xml
new file mode 100644
index 000000000..ded2b7f42
--- /dev/null
+++ b/reference/stream/streamwrapper/url-stat.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+ streamWrapper::url_stat
+ Ruft Informationen über eine Datei ab
+
+
+
+ &reftitle.description;
+
+ publicarrayfalsestreamWrapper::url_stat
+ stringpath
+ intflags
+
+
+ Diese Methode wird als Reaktion auf alle Funktionen aufgerufen, die mit
+ stat zusammenhängen, wie etwa:
+
+ copy
+ fileperms
+ fileinode
+ filesize
+ fileowner
+ filegroup
+ fileatime
+ filemtime
+ filectime
+ filetype
+ is_writable
+ is_readable
+ is_executable
+ is_file
+ is_dir
+ is_link
+ file_exists
+ lstat
+ stat
+ SplFileInfo::getPerms
+ SplFileInfo::getInode
+ SplFileInfo::getSize
+ SplFileInfo::getOwner
+ SplFileInfo::getGroup
+ SplFileInfo::getATime
+ SplFileInfo::getMTime
+ SplFileInfo::getCTime
+ SplFileInfo::getType
+ SplFileInfo::isWritable
+ SplFileInfo::isReadable
+ SplFileInfo::isExecutable
+ SplFileInfo::isFile
+ SplFileInfo::isDir
+ SplFileInfo::isLink
+ RecursiveDirectoryIterator::hasChildren
+
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ path
+
+
+ Der Dateipfad oder die URL, deren Status ermittelt werden soll. Es ist zu beachten, dass es sich im Fall einer URL um eine durch :// getrennte
+ URL handeln muss. Andere URL-Formen werden nicht unterstützt.
+
+
+
+
+ flags
+
+
+ Enthält zusätzliche Flags, die von der Streams-API gesetzt werden. Es kann einen oder mehrere
+ der folgenden Werte enthalten, mit ODER verknüpft.
+
+
+
+
+ Flag
+ Beschreibung
+
+
+
+
+ STREAM_URL_STAT_LINK
+
+ Für Ressourcen mit der Fähigkeit, auf eine andere Ressource zu verweisen
+ (wie etwa eine HTTP-Location:-Weiterleitung oder ein
+ Symlink im Dateisystem). Dieses Flag gibt an, dass nur Informationen
+ über den Link selbst zurückgegeben werden sollen, nicht über die
+ Ressource, auf die der Link verweist. Dieses Flag wird als
+ Reaktion auf Aufrufe von lstat,
+ is_link oder filetype gesetzt.
+
+
+
+ STREAM_URL_STAT_QUIET
+ Ist dieses Flag gesetzt, sollte der Wrapper keinerlei
+ Fehler auslösen. Ist dieses Flag nicht gesetzt, ist man dafür verantwortlich,
+ Fehler mittels der Funktion trigger_error
+ während der Statusermittlung des Pfads zu melden.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Sollte ein &array; mit denselben Elementen zurückgeben wie stat.
+ Unbekannte oder nicht verfügbare Werte sollten auf einen sinnvollen Wert gesetzt werden
+ (üblicherweise 0). Besondere Aufmerksamkeit sollte
+ mode gewidmet werden, wie unter stat dokumentiert.
+ Sollte im Fehlerfall &false; zurückgeben.
+
+
+
+
+ &reftitle.errors;
+ &userstream.not.implemented.warning;
+
+
+
+
+
+ &reftitle.notes;
+ &userstream.updates.context;
+
+
+
+ &reftitle.seealso;
+
+
+ stat
+ streamwrapper::stream_stat
+
+
+
+
+
+
+