ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ°
ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ° β Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΡ
ΠΎΠΏΡΠΈΠΉ ΡΠΎΠΊΠ΅ΡΠ°
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΎΠ±ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
tcp, http
ΠΈ ftp.
ΠΠΏΡΠΈΠΈ
bindto
-
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ IP-Π°Π΄ΡΠ΅Ρ (IPv4 ΠΈΠ»ΠΈ IPv6) ΠΈ (ΠΈΠ»ΠΈ) Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°,
ΠΊΠΎΡΠΎΡΡΠ΅ PHP Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠΈ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ip:port Π΄Π»Ρ Π°Π΄ΡΠ΅ΡΠ° IPv4,
ΠΈ [ip]:port Π΄Π»Ρ Π°Π΄ΡΠ΅ΡΠ° IPv6.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄Π»Ρ IP-Π°Π΄ΡΠ΅ΡΠ° ΠΈ (ΠΈΠ»ΠΈ) ΠΏΠΎΡΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ 0 ΡΠ°Π·ΡΠ΅ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ΅
ΡΠ°ΠΌΠΎΠΉ Π²ΡΠ±ΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΠΉ IP ΠΈ (ΠΈΠ»ΠΈ) ΠΏΠΎΡΡ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ FTP-ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ 2 ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ, ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ
Π½Π΅Π»ΡΠ·Ρ Π·Π°Π΄Π°ΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°.
backlog
-
ΠΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠΎΠΊΠ΅ΡΠ°.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΏΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ stream_socket_server().
ipv6_v6only
-
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΠ‘ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π΄Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ IPv4-Π°Π΄ΡΠ΅ΡΠΎΠ² Ρ IPv6-Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡ IPv4-Π°Π΄ΡΠ΅ΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ,
ΠΏΠΎΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ Π°Π΄ΡΠ΅ΡΡ [::].
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ stream_socket_server().
so_reuseport
-
Π Π°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΡΠ΅ IP:ΠΏΠΎΡΡ, Π΄Π°ΠΆΠ΅
ΠΈΠ· ΡΠ°Π·Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ stream_socket_server().
so_broadcast
-
Π Π°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ»Π°ΡΡ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π²/ΠΎΡ ΡΠΈΡΠΎΠΊΠΎΠ²Π΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π°Π΄ΡΠ΅ΡΠΎΠ².
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ stream_socket_server().
tcp_nodelay
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄Π»Ρ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ true ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ SOL_TCP,NO_DELAY=1
ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΎΡΠΊΠ»ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ TCP Nagle.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠΈΠΈ bindto
<?php
// Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· IP-Π°Π΄ΡΠ΅Ρ 192.168.0.100
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);
// Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· IP-Π°Π΄ΡΠ΅Ρ 192.168.0.100 ΠΈ ΠΏΠΎΡΡ 7000
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),
);
// Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· IPv6-Π°Π΄ΡΠ΅Ρ 2001:db8::1
// ΠΈ ΠΏΠΎΡΡ 7000
$opts = array(
'socket' => array(
'bindto' => '[2001:db8::1]:7000',
),
);
// Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡ 7000
$opts = array(
'socket' => array(
'bindto' => '0:7000',
),
);
// Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ...
$context = stream_context_create($opts);
// ...ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅
echo file_get_contents('http://www.example.com', false, $context);
?>