рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж,
рд╣рдо рд╕реНрдХреНрд░реИрдЪ рд╕реЗ PHP рдореЗрдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рд╡рд┐рд╖рдп рдореЗрдВ рд╕рдореБрджрд╛рдп рдХреА рдХреБрдЫ рд░реБрдЪрд┐ рд╣реИред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛:
- рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд▓рд╛рдирд╛
- рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░
- рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрд▓рдЧрд╛рд╡ рдорд╛рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛
- nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЛ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛
- рдХрдВрд╕реЛрд▓ рд╕реЗ рд▓реЙрдиреНрдЪ
- yii рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЖрдкрдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг
- рдкреНрд░рджрд░реНрд╢рди
рдФрд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдФрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбреЗрдореЛ рдЪреИрдЯ рдХрд╛ рд▓рд┐рдВрдХред
рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд▓рд╛рдирд╛
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдФрд░ 1024 рдПрдХ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реАрдорд╛ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдВ), рд╕рд╛рде рд╣реА рдкреВрд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдФрд░ рди рдХреЗрд╡рд▓ рдПрдХ рдХреЛрд░), рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - (рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ = рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛)ред
рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
pcntl_fork()
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдмрдЪреНрдЪрд╛) рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЗрд╕ рдХреЙрд▓ рдХреЛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд▓рдЧрднрдЧ рдкреВрд░реНрдг рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реИред
pcntl_fork()
рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж
pcntl_fork()
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╢рд╛рдЦрд╛рдПрдБ: рдпрджрд┐
pcntl_fork()
рдлрд╝рдВрдХреНрд╢рди
pcntl_fork()
рдпрд╣ рдмрдЪреНрдЪреЗ рдХреА PID рдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ NULL рдХреЛ рдмрдЪреНрдЪреЗ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдХрд╛рдВрдЯрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдлрд▓ рд░рд╣рд╛, рддреЛ
pcntl_fork()
рдлрд╝рдВрдХреНрд╢рди -1)ред
$pid = pcntl_fork();
рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдПрдХ рд▓реВрдк рдореЗрдВ рдЬрд┐рддрдиреА рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрддрдиреЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
$childs = array(); for ($i=0; $i<4; $i++) { $pid = pcntl_fork();
рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░
рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН рд╕рдВрдмрдВрдзрд┐рдд рд╕реЙрдХреЗрдЯ:
stream_socket_pair()
рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдмрдВрдзрд┐рдд рдЕрдкреНрд░рднреЗрджреНрдп рд╕реНрдЯреНрд░реАрдо рд╕реЙрдХреЗрдЯ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдПрдХ рд╕реЙрдХреЗрдЯ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
$pair = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
рдЕрдм рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд╛рдВрдЯреЗ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
$pair = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
рдХрдИ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб:
$parent = null; $childs = array(); for ($i=0; $i<5; $i++) { $pair = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк,
$childs
рд╕рд░рдгреА рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реЙрдХреЗрдЯ рд╣реЛрдВрдЧреЗ, рдФрд░ рдмрдЪреНрдЪреЗ
$parent
рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
$parent
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╕реНрд╡рд╛рдореА рдФрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкреГрдердХреНрдХрд░рдг
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕реАрдзреЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:
- рдорд╛рддрд╛-рдкрд┐рддрд╛ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдВрдЧреЗ (рдорд╛рд╕реНрдЯрд░ рд╣реЛрдВрдЧреЗ)
- рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреА (рд╢реНрд░рдорд┐рдХ рд╣реЛрдВрдЧреЗ)
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯ рдХреЗ рдкрдиреНрдиреЛрдВ рд╕реЗ рдпрд╛ рдореБрдХреБрдЯ рд╕реЗ рд▓рд┐рдкрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдореЗрдВ рд▓рдЧреЗ рд░рд╣реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрдХреЗрдЯ рдмрдирд╛рдПрдВрдЧреЗ, рдФрд░ рдЗрд╕реЗ рд╕реБрдирдиреЗ рдХреЗ рд╕реЙрдХреЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
$service = stream_socket_server('unix:///tmp/websocket.sock', $errorNumber, $errorString);
рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдкреНрд░реЙрдХреНрд╕реА nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░
Nginx рд╕рдВрд╕реНрдХрд░рдг 1.3.13 рдХреЗ рдмрд╛рдж рд╕реЗ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред Nginx рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рд╕рд╛рдЗрдЯ рдХреЗ рд╕рдорд╛рди рдкреЛрд░реНрдЯ рдкрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдПрдХ рдЖрдИрдкреА рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╕рдВрдж рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдмрдиреНрд╕ рд╕реЗ рдЦреБрд▓реЗ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг nginx config рдЬреЛ рдЗрд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
limit_conn_zone $binary_remote_addr zone=perip:10m; server { listen 5.135.163.218:80; server_name sharoid.ru; location / { limit_conn perip 5;
рдХрдВрд╕реЛрд▓ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
php websocket.php
рдпрд╛
./websocket.php
php websocket.php
(рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж)
рдпрджрд┐ рдЖрдк
nohup
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
nohup ./websocket.php &
, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдВрд╕реЛрд▓ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рджреЛ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред
- рдкрд╣рд▓рд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рд╣реИ: рдЖрдк рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ 1024 рд╕реЗ рдЕрдзрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рдЦреЛрд▓ рд╕рдХрддреЗред рдЕрдзрд┐рдХ рдпреБрдЧрдкрдд рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
ulimit -n 65535
, рдФрд░ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"
ред рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ ulimit -n
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рджреВрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ
stream_select()
: рдпрд╣ 1024 рд╕реЗ рдЕрдзрд┐рдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ - рдЖрдкрдХреЛ рдПрдХ рдмрдврд╝реА рд╣реБрдИ FD_SETSIZE
рд╕рд╛рде php рдХреЛ рдлрд┐рд░ рд╕реЗ FD_SETSIZE
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдерд╛, рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ (рд╢реНрд░рдорд┐рдХреЛрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Yii рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдорд╛рд╕реНрдЯрд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрдХреЗрдЯ рдкрд░ рд╕реБрдирддрд╛ рд╣реИ (рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣
unix:///tmp/websocket.sock
рдерд╛
unix:///tmp/websocket.sock
), рд╣рдо рдЗрд╕ рд╕реЙрдХреЗрдЯ рдХреЛ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдореЗрдВ рдХрд╣реАрдВ рднреА рдпрд╛ рдореБрдХреБрдЯ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рднреЗрдЬ рджреЗрдЧрд╛ рд╕рднреА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛, рдФрд░ рд╡реЗ, рдмрджрд▓реЗ рдореЗрдВ, рд╕рднреА рдЧреНрд░рд╛рд╣рдХ:
$service = stream_socket_client ('unix:///tmp/websocket.sock', $errno, $errstr); fwrite($service, ' ');
Yii рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
Yii::app()->websocket->send(' ');
Yii рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХрдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбрд╛рдЙрдирд▓реЛрдб
рдХрд░реЗрдВ , рдЗрд╕реЗ
extensions/websocket
components
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, Websocket.php, WebsocketMasterHandler.php рдФрд░ WebsocketWorkerHandler.php рдХреЛ рдирдореВрдирд╛ / yii рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдбрд╛рд▓реЗрдВред
commands
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдирдореВрдирд╛ / yii рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ WebsocketCommand.php рд╕реЗ рдбрд╛рд▓реЗрдВред
Main.php рдФрд░ рдХрдВрд╕реЛрд▓.php рдХреЙрдиреНрдлрд┐рдЧ рдореЗрдВ, рдХрдВрдкреЛрдиреЗрдВрдЯ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдбрд╛рд▓реЗрдВ:
'websocket' => array( 'class' => 'Websocket',
рдХрдВрд╕реЛрд▓.рдлреИрдк рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рд╣рдо рдЗрдВрдкреЛрд░реНрдЯ рд╕реЗрдХреНрд╢рди рдореЗрдВ рднреА рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:
'ext.websocket.*'
рдкреНрд░рджрд░реНрд╢рди
рдбреЗрдореЛ рдЪреИрдЯ 2.0 (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╕реАрдорд╛, рдПрдХ рдЖрдИрдкреА рд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 1 рд╕рдВрджреЗрд╢)рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛, рд╕рд╛рде рд╣реА рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж рдкрд╣рдЪрд╛рдиреА рдЧрдИ рдХрдорд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рдерд╛ред
рдбреЗрдореЛ рдЪреИрдЯ 1.0 (рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реВрдЪреА, рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ)рдореИрдВрдиреЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдФрд░
рдЬреАрдердм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛
рдЕрджреНрдпрддрди: рдпрджрд┐ рд╕рдореБрджрд╛рдп рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ, рддреЛ рдЕрдЧрд▓рд╛ рд▓реЗрдЦ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЦреЗрд▓ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧреА рдПрдХ рд╣реА рдЦреЗрд▓ рдХреЗ рдореИрджрд╛рди рдкрд░ рд╣реЛрдВрдЧреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВрдЧреЗ (рдбреЗрдореЛ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реИ)ред
рднрд╛рдЧ рддреАрди: рдЪреИрдЯ рд╕реЗ рдЧреЗрдо рддрдХ: рдмреИрдЯрд▓ рд╕рд┐рдЯреА