PHPCon Poland 2024

Socket-Kontextoptionen

Socket-KontextoptionenListe der Socket-Kontextoptionen

Beschreibung

Socket-Kontextoptionen sind für alle Wrapper verfügbar, die über Sockets arbeiten, wie tcp, http und ftp.

Optionen

bindto

Wird verwendet, um die IP-Adresse (entweder IPv4 oder IPv6) und/oder die Portnummer anzugeben, die PHP für den Zugriff auf das Netzwerk verwenden soll. Die Syntax ist für IPv4-Adressen ip:port und für IPv6-Adressen [ip]:port. Wenn die IP oder der Port auf 0 gesetzt wird, kann das System die IP und/oder den Port selbst auswählen.

Hinweis:

Da FTP im Normalbetrieb zwei Socket-Verbindungen herstellt, kann die Portnummer bei dieser Option nicht angegeben werden.

backlog

Wird verwendet, um ausgehende Verbindungen in der Verbindungs-Warteschlange des Sockets zu begrenzen.

Hinweis:

Dies gilt nur für stream_socket_server().

ipv6_v6only

Überschreibt den Standard des Betriebssystems bezüglich der Abbildung von IPv4 auf IPv6.

Hinweis:

Dies ist insbesondere dann wichtig, wenn bei einer Bindung an [::] versucht wird, IPv4-Adressen separat abzuhören.

Dies gilt nur für stream_socket_server().

so_reuseport

Erlaubt mehrere Bindungen an ein und dasselbe ip:port-Paar, sogar von verschiedenen Prozessen aus.

Hinweis:

Dies gilt nur für stream_socket_server().

so_broadcast

Ermöglicht das Senden und Empfangen von Daten an/von Broadcast-Adressen.

Hinweis:

Dies gilt nur für stream_socket_server().

tcp_nodelay

Wenn diese Option auf true gesetzt wird, wird entsprechend auch SOL_TCP,NO_DELAY=1 gesetzt, wodurch der Nagle-Algorithmus für TCP deaktiviert wird.

Changelog

Version Beschreibung
7.1.0 tcp_nodelay wurde hinzugefügt.
7.0.1 ipv6_v6only wurde hinzugefügt.

Beispiele

Beispiel #1 Grundlegendes Beispiel für die Verwendung von bindto

<?php
// Verbindung zum Internet über die IP-Adresse '192.168.0.100' aufbauen
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);


// Verbindung zum Internet über die IP-Adresse '192.168.0.100'
// und den Port '7000' aufbauen
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),
);


// Verbindung zum Internet über die IPv6-Adresse '2001:db8::1'
// und den Port '7000' aufbauen
$opts = array(
'socket' => array(
'bindto' => '[2001:db8::1]:7000',
),
);


// Verbindung zum Internet über Port '7000' aufbauen
$opts = array(
'socket' => array(
'bindto' => '0:7000',
),
);


// den Kontext erstellen...
$context = stream_context_create($opts);

// ...und ihn zum Abrufen der Daten verwenden
echo file_get_contents('http://www.example.com', false, $context);

?>

add a note

User Contributed Notes 2 notes

up
10
mix at ater dot me
5 years ago
The right way for forcing IPv6 is 'bindto' => '[::]:0'
up
2
guru at jnt-finland dot fi
8 years ago
You can set "bindto" to "0:0" to force use IPv4 instead of IPv6. And probably "[0]:0" to force use IPv6, thou this I couldn't test.
To Top