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; + + public stringboolstreamWrapper::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; + + public arrayfalsestreamWrapper::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 + + + + + + +