рдЖрдИрдкреА тАЛтАЛрджреНрд╡рд╛рд░рд╛ рдПрдХ рджреЗрд╢ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг: рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ

рдЖрдИрдкреА тАЛтАЛрджреНрд╡рд╛рд░рд╛ рджреЗрд╢ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдИрдкреА рдкрддреЗ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рджреЗрд╢реЛрдВ рдХреА рд╢реНрд░реЗрдгреА рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рд╡реА рдпрд╛ рдПрд╕рдХреНрдпреВрдПрд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдХреА рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓реЗрдВред

рдлрд░рд╡рд░реА рдмреЗрд╕ рдЬрд┐рдпреЛрд▓рд╛рдЗрдЯ рджреЗрд╢, рдореИрдХреНрд╕рдорд╛рдЗрдВрдб рд╕реЗ рдЬрд┐рдпреЛрдЖрдИрдкреА рдХрдВрдЯреНрд░реА рдХрд╛ рдореБрдлреНрдд рд╕рдВрд╕реНрдХрд░рдг, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдФрд░ рдореЗрд░реА "рдмрд╛рдЗрдХ" рдиреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ред

рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ


MySQL

MySQL рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ DBMS рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрд┐рд╕рдореЗрдВ IP рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдФрд░ рджреЗрд╢ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, IP рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдПрдБ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

CREATE TABLE `ip2country ` ( `ipn1` INT(10) UNSIGNED NOT NULL, `ipn2` INT(10) UNSIGNED NOT NULL, `num` TINYINT(3) UNSIGNED NOT NULL, PRIMARY KEY (`ipn1`), INDEX `ipn2` (`ipn2`) ) ENGINE=MyISAM; 

MySQL рдХреЗ рд▓рд┐рдП, 3 рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  1. рд╕рд░рд▓ред
     SELECT `num` FROM `ip2country` WHERE `ipn1` <= INET_ATON(' IP ') AND `ipn2` >= INET_ATON('IP') 
  2. рдмреАрдЪред
     SELECT num FROM `ip2country` WHERE INET_ATON('IP') BETWEEN `ipn1` AND `ipn2` 
  3. рд╕рдмрд╕рд┐рд▓реЗрдХреНрдЯред
     SELECT num FROM (SELECT * FROM ip2country WHERE `ipn1` <= INET_ATON('IP') ORDER BY `ipn1` DESC LIMIT 1) AS t WHERE `ipn2` >= INET_ATON('IP') 
рдЬрд┐рдпреЛрдЖрдИрдкреА рдПрдкреАрдЖрдИ
рдЬрд┐рдпреЛрдЖрдИрдкреА PHP рдХреЗ рд▓рд┐рдП рдореВрд▓ рдПрдкреАрдЖрдИ рдФрд░ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
SxGeo v2
рдореЗрд░реА "рдмрд╛рдЗрдХ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рд▓рдЧрднрдЧ 6 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдЙрд╕ рд╕рдордп рдЙрдкрд▓рдмреНрдз рдЖрдИрдкреА рджреНрд╡рд╛рд░рд╛ рджреЗрд╢ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдмрд╛рдЗрдирд░реА рдЬрд┐рдпреЛрдЖрдИрдкреА рдкреНрд░рд╛рд░реВрдк рдХреА рдЧрддрд┐ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдерд╛ред рд▓реЗрдХрд┐рди рд╡рд╣, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд╕рд╣реА рдЖрдИрдкреА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╛рдЗрд▓ рдиреЗрд╡реАрдЧреЗрд╢рди рдХреА рдХрдореА рдереАред рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдЖред рдЬреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рдореИрдВ рдЙрдореНрдореАрдж рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдирд┐рдХрд▓рд╛ред рд▓рдВрдмреЗ рд╕рдордп рддрдХ Sypex рдЬрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдирдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рджреВрд╕рд░реЗ рджрд┐рди рдореИрдВрдиреЗ рдХреБрдЫ рдФрд░ рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, Sypex Geo 2 (рд╕рдВрдХреНрд╖рд┐рдкреНрдд SxGeo) рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 25% рдЫреЛрдЯреА рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЧрддрд┐ 1.7-2 рдЧреБрдирд╛ рдмрдврд╝ рдЧрдИ рд╣реИред

рдЬрд┐рдпреЛрдЖрдИрдкреА рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдореБрдЦреНрдп рд▓рд╛рднред
SxGeo рдХреЛ рддреАрди рдореЛрдб рдореЗрдВ рдЯреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
Geobaza
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛрдмреЛрдЬрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рд╕реЗ рдмрд╛рд╣рд░, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рджреЗрд╢реА рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдХрд╛рдлреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ рдереАрдВред Geobaza рдиреЗ 2000-3000 IP / sec рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛, рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝реА рднрд┐рдиреНрдирддрд╛ рдереАред рдЕрдЧрд░ рдЬрд┐рдпреЛрдЬрд╝рд╛ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рд╛ рдФрд░ рдлрд░рд╡рд░реА рдЬрд┐рдпреЛрд▓рд╛рдЗрдЯ рдХрдВрдЯреНрд░реА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдЦреБрд╢реА рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред

рдкрд░реАрдХреНрд╖рдг


рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдПрдХ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЧрдИ рдереА, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢реБрд░реБрдЖрдд рдореЗрдВ 10,000 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдИрдкреА рдкрддреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереАред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рднреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЗрд╕ рд╕рд░рдгреА рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдереЗред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдЗрд╕рд▓рд┐рдП рдЪреБрдиреА рдЧрдИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдереЗред

FreeBSD 8 рдФрд░ PHP 5.2.17 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рднреА рд╡рд┐рди 7 x 64, PHP 5.3.9 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдиреБрдкрд╛рдд рдЙрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдХреЗрд╡рд▓ FreeBSD рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг 10 рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд╕рдд рдбреЗрдЯрд╛ рдЧреНрд░рд╛рдл рдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


рд╕рдмрд╕реЗ рд╕рд░рд▓ MySQL рдХреНрд╡реЗрд░реАрдЬрд╝ рд╕рдмрд╕реЗ рдзреАрдореА рдирд┐рдХрд▓реАред рдЬрдм рдЖрдк рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдРрд╕реЗ рдзреАрдореЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдХрд╛рд░рдг рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

 EXPLAIN SELECT num FROM `ip2country` WHERE ipn1 <= INET_ATON('88.88.88.88') AND ipn2 >= INET_ATON('88.88.88.88') LIMIT 1; 

 id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE ip2country range PRIMARY PRIMARY 4 NULL 51059 Using where 1 SIMPLE ip2country range PRIMARY PRIMARY 4 NULL 53852 Using where 1 SIMPLE ip2country range PRIMARY,ipn2 PRIMARY 4 NULL 51587 Using where 


рдкрд╣рд▓рд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╕реВрдЪрдХрд╛рдВрдХ (`ipn1`) , рджреВрд╕рд░рд╛ рдПрдХ рд╕рдордЧреНрд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╕реВрдЪрдХрд╛рдВрдХ (` ipn1`, `ipn2`) , рджреЛ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╕реВрдЪрдХрд╛рдВрдХ (` ipn1`), INDEX `ipn2` (` ipn2`) рдХреЗ рд▓рд┐рдП рддреАрд╕рд░рд╛ рд╣реИ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕рдордЧреНрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ LIMIT 1 рдХреЗ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ EXPLAIN рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ LIMIT рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдиреЗрд╕реНрдЯреЗрдб рд╕реЗрд▓реЗрдХреНрдЯ рд╡рд╛рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЬреНрдпрд╛рджрд╛ рддреЗрдЬ рд╣реИред рдХреНрд╡реЗрд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ MySQL рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕, рдЬрдм рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рд╢реЗрд╖ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪрдХрд░ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЬрд┐рдпреЛрдЖрдИрдкреА рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ MySQL рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рдмреЗрд╣рддрд░ рд╣реИред рдореБрдЭреЗ рднреНрд░рдо рдерд╛ рдХрд┐ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрддрдиреА рдЫреЛрдЯреА рд╡реГрджреНрдзрд┐ рджреЗрддрд╛ рд╣реИ, 10% рд╕реЗ рдХрдоред Geoip.inc рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдкрд░, рдореБрдЭреЗ рджреЛрд╖реА рдкрд╛рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рдХрд▓рд╛:

 if ($gi->flags & GEOIP_MEMORY_CACHE) { // workaround php's broken substr, strpos, etc handling with // mbstring.func_overload and mbstring.internal_encoding $enc = mb_internal_encoding(); mb_internal_encoding('ISO-8859-1'); $buf = substr($gi->memory_buffer, 2 * $gi->record_length * $offset, 2 * $gi->record_length); mb_internal_encoding($enc); } 

рдпрджрд┐ рдЖрдк mb_internal_encoding рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрдд рдореЗрдВ рдЧрддрд┐ 6600 рдЖрдИрдкреА / рд╕реЗрдХрдВрдб рддрдХ рдмрдврд╝ рдЬрд╛рдПрдЧреА - рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╡реГрджреНрдзрд┐ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рд╢рд╛рдпрдж рдЬрд┐рдпреЛрдЖрдИрдкреА рд╕рд┐рдЯреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝рд┐рдпрд╛рдВ рдереАрдВред

рдЬреИрд╕рд╛ рдХрд┐ SxGeo рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдмрд╣реБрдд рдХрдо рд╣реИрдВред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ рднреА рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмреИрдЪ + рдореЗрдореЛрд░реА рдореЛрдб рдореЗрдВ рдпрд╣ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд 40% рд╡реГрджреНрдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬреЛ рд▓реЛрдЧ SxGeo 2 рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдЪреНрдЫрд╛рдУрдВ рдФрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдпреБрдкреАрдбреАред рдореИрдВрдиреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ 2 рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ LIMIT 1 рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ MySQL рдмрд╣реБрдд рд╕реБрд╕реНрдд, рдХрд╣реАрдВ 3-5 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In138067/


All Articles