рд╣реИрдВрдбрд▓рд░ рд╕реЙрдХреЗрдЯ рдФрд░ php_handlerocket рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡

handlersocket



MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓реЗрдЦ NoSQL рдХреЗ рд░реВрдк рдореЗрдВ - рдХреИрд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 750,000 рдХреНрд╡реЗрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХрд╣рд╛рдиреА (рдореЗрд░реЗ рджреЛрд╕реНрдд рд╡рд╛рджрд┐рдо рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд) рдХреЛ рдереЛрдбрд╝рд╛ рдЪрдХреНрдХрд░ рдЖрдпрд╛ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╣рд╛рде рдкреНрд░рдпреЛрдЧреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдПред



PHP рдХреЗ рд▓рд┐рдП рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛрдб. google.com/p/php-handlerocket

PEAR openpear.org/package/Net_HandlerSocket

PHP рджреЗрд╢реА github.com/tz-lom/HSPHP



рдиреАрдЪреЗ рдореЗрд░реЗ рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЗрдВрдкреНрд░реЗрд╢рди рд╣реИрдВред



рдореИрдВ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдкрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ MySQL рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред



рд╣реИрдВрдбрд▓рд░рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ SHOW PROCESSLIST рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж; рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:



рд╣реИрдВрдбрд▓рд░рдХреЗрдЯ рдкреИрд╕рд┐рд╡



рдЬрдм рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрд┐рддреНрд░ рд▓рдЧрднрдЧ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛

рд╣реИрдВрдбрд▓рдмрд╛рд░ рд╕рдХреНрд░рд┐рдп



рднрд░реА рд╣реБрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ, рд╣рдо рд╣реИрдВрдбрд▓рдмрд╛рд░ рд▓реЛрдбрд┐рдВрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЫрд╡рд┐ рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ рддреАрди рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓реЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рдХреНрд░рд┐рдп рд╣реИ (рдкреНрд░рдЧрддрд┐ рдореЗрдВ)ред



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдзрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ my.conf рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

loose_handlersocket_threads = 16

loose_handlersocket_threads_wr = 1









рдпрджрд┐ рдЖрдкрдиреЗ PHP рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИ, рддреЛ php-hanlpersocket рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдкреНрд░рд▓реЗрдЦрди рдХреА рдХрдореА рд╕реЗ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рддред рдЙрджрд╛рд╣рд░рдг рдФрд░ рджреГрд╢реНрдпрддрд╛ рдХреА рдкрд╕рдВрдж рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рд╣реИред MyISAM рдФрд░ InnoDb рджреЛрдиреЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред



рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдЪрдпрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг php-handlerocket рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╣реИред

рдЪрдпрди рдХреА рдЦреЛрдЬ рдСрдкрд░реЗрд╢рди "=" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИ, рд╕рдВрдЪрд╛рд▓рди рднреА рд╕рдВрднрд╡ рд╣реИ:

рдЕрдзрд┐рдХ '>',

'<' рд╕реЗ рдХрдо

'> =' рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ

'<=' рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо



рдЪрд░рд┐рддреНрд░ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдЗрдХрдирд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рдЖрдк рдмрд╣реБрдд рд╕рдордп рдЦреЛ рджреЗрдВрдЧреЗред



рдирд╛рдо рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

CREATE TABLE `test`.`cities` (

`id_city` int (10) unsigned NOT NULL AUTO_INCREMENT,

`id_region` int (10) unsigned NOT NULL ,

`id_country` mediumint(8) unsigned NOT NULL ,

`city_name` varchar (255) NOT NULL ,

`city_order` int (10) unsigned NOT NULL ,

PRIMARY KEY (`id_city`),

KEY `id_region` (`id_region`),

KEY `name` (`city_name`)

) ENGINE=MyISAM




$hs = new HandlerSocket($host, $port);



if (!($hs->openIndex(0, $dbname, $table, 'name', 'city_name,id_city,id_region')))

{

echo $hs->getError(), PHP_EOL;

die( 'error open index');

}



$retval = $hs->executeSingle(0, '=', array(''), 10);











рдЙрддреНрддрд░ рд╣реИ:

array(1) {

[0]=> array(2) {

[0]=> string(6) ""

[1]=> string(4) "1976"

[2]=> string(1) "72"

}

}









рдЖрдк рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирдореВрдирд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (id_region = 1):

if (!($hs->openIndex(0, $dbname, $table, 'id_region', 'city_name,id_city,id_region')))

{

die($hs->getError());

}

$retval = $hs->executeSingle(0, '=', array(1), 100, $off);







рд▓рдЧрд╛рддрд╛рд░ 100 - рдирдореВрдирд╛ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛, $ рдСрдл - рдСрдлрд╕реЗрдЯ, рд▓рд┐рдорд┐рдЯ рдХреЗ рд╕рдорд╛рди, рдЪрдпрди рдореЗрдВ OFFSETред

рдЙрддреНрддрд░ SQL рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди 100 рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА рд╣реИ: SELECT 'id_region', 'city_name, id_city, id_region' FROM cityes WHERE id_region = 1 LIMIT 100, $ off;



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬрдм рд╕рдВрдЪрд╛рд▓рди (рд╕рдВрдХреЗрдд) '> =' рдпрд╛ '<=' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдХреБрдЫ рдЕрдХреНрд╖рд░реЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдорд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдмреИрдЪреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рд╕рд░рд▓ рдирдореВрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдЙрдирдХрд╛ рдЬреНрдЮрд╛рди рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░, рдЦрд╛рд╕рдХрд░ рдЬрдм рдХреБрдЫ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЯреЗрд▓рдиреЗрдЯ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреА рд╣реЛрдЧреАред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╡рд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рдЗрди.рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдЕрдиреБрд╡рд╛рдж "рд╣реИрдВрдбрд▓рд░рд╕реЙрдХреЗрдЯ рдХрд╛ рдкрд░рд┐рдЪрдп: рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╡рд░рдг рдФрд░ php- рд╣реИрдВрдбрд▓рд░рдмреЛрд░реНрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди" рдореЗрдВ рд╣реИ



рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ: рдЯреЗрд▓рдиреЗрдЯ рдореЗрдВ, рдкреЛрд░реНрдЯ 9998 рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

telnet localhost 9998

P 0 test cities name city_name,id_city

// TAB (\t), NULL, TAB

0 1 ---> 0 1

///

0 > 1 a 10

/// (int), (<>= ...) - , [, Limit, Offset]

0 2 A Baa 10564 A Barqueira 10565 A Corua 10566 A da Beja 15510 A dos Arcos 15511 A dos Bispos 15512 A dos Cunhados 15513 A dos Francos 15514 A Merca 11120 A Nario 13257

// =0 (), (city_name,id_city)

// , TAB, BK(\n)









рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдмрд╣реБ-рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд╢реНрд░рд┐рдд рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдкреНрд░рд╢реНрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдХрдИ рдЕрдиреБрд░реЛрдз:



$hs->openIndex(0, $dbname, $table, 'PRIMARY' , 'city_name,id_city,id_region' );

$hs->openIndex(1, $dbname, $table, 'id_region' , 'city_name,id_city,id_region' );

$retval = $hs->executeMulti(

array(array(0, '=' , array( '23' ), 1, 0),

array(1, '=' , array( '3' ), 10, 0)));





* This source code was highlighted with Source Code Highlighter .








INSERT / UPDATE / DELETE рд╕рдВрдЪрд╛рд▓рди рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд░рд╣рд╛ред рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдореАрдХреНрд╖рд╛ рджреЗрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВред



рд╣реИрдВрдбрд▓рд░рдХреЗрдЯ рдиреЗ рд╕реНрдлрд┐рдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рд╕реНрдлрд┐рдВрдХреНрд╕ рдХреА рдорджрдж рд╕реЗ, рд╣рдо рдЖрд╡рд╢реНрдпрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдИрдбреА рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣реИрдВрдбрд▓рд░рдмреЛрд░реНрдб рдХреА рдорджрдж рд╕реЗ рд╣рдо рддреБрд░рдВрдд рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред



рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛

рд╢реАрд░реНрд╖ рдкрдВрдХреНрддрд┐ phhhs

рд▓реЛрдЕрд░ php- рд╣реИрдВрдбрд▓рд░рдХреЗрдЯ

рд╕рдорд╛рд╡реЗрд╢рди рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рдЧрдВрджрд╛ рд╕рдордп

0.005791

0.001404

---

0.007095

0.001383

---

0.00456

0.002563

---

0.006104

0.001384









рд╕рдордп рдФрд░ рд╢рд╛рдорд┐рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд┐рдирд╛, рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдкреАрдХреЗ рдкреНрд░рддрд┐ рдПрдХ рдЪрдпрди

$t1 = microtime();

$retval = $hs->executeSingle(2, '=', array('60187'));

echo microtime()-$t1, PHP_EOL;

$t1 = microtime();

$res = $rs->select('=','60187');

echo microtime()-$t1, PHP_EOL;



0.000451

0.000632

---

0.00039400000000001

0.00020700000000007

---

0.00040000000000007

0.00021399999999994

---

0.00053999999999998

0.002058

---

0.002926

0.0002089999999999

---

0.000386

0.00021100000000002









рдмрдЧ рдХреА рдкрд╣рдЪрд╛рди рдХреА

рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдЯреЗрд▓рдиреЗрдЯ рдХреЛ рдХрд┐рд▓ -9 рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╕реЙрдХреЗрдЯ рд▓рдЯрдХрд╛ рд╣реБрдЖ рдерд╛ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рдж рдХреЗ рдкреБрдирд░рд╛рд░рдВрдн рдиреЗ рдЗрд╕реЗ рдлреНрд░реАрдЬ рдХрд░ рджрд┐рдпрд╛ (рд╕реЙрдХреЗрдЯ рдкрдврд╝рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛)ред



рд╢реЛрдХреЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреА рд╣реИрдВ



рдорд╛рдВрд╕рдкреЗрд╢рд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рдерд╛ред



All Articles