
рдЖрдИрдкреА тАЛтАЛрджреНрд╡рд╛рд░рд╛ рджреЗрд╢ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдИрдкреА рдкрддреЗ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рджреЗрд╢реЛрдВ рдХреА рд╢реНрд░реЗрдгреА рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рд╡реА рдпрд╛ рдПрд╕рдХреНрдпреВрдПрд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдХреА рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓реЗрдВред
рдлрд░рд╡рд░реА рдмреЗрд╕ рдЬрд┐рдпреЛрд▓рд╛рдЗрдЯ рджреЗрд╢, рдореИрдХреНрд╕рдорд╛рдЗрдВрдб рд╕реЗ рдЬрд┐рдпреЛрдЖрдИрдкреА рдХрдВрдЯреНрд░реА рдХрд╛ рдореБрдлреНрдд рд╕рдВрд╕реНрдХрд░рдг, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдФрд░ рдореЗрд░реА "рдмрд╛рдЗрдХ" рдиреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ред
рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
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 рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рд╕рд░рд▓ред
SELECT `num` FROM `ip2country` WHERE `ipn1` <= INET_ATON(' IP ') AND `ipn2` >= INET_ATON('IP')
- рдмреАрдЪред
SELECT num FROM `ip2country` WHERE INET_ATON('IP') BETWEEN `ipn1` AND `ipn2`
- рд╕рдмрд╕рд┐рд▓реЗрдХреНрдЯред
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 рдЧреБрдирд╛ рдмрдврд╝ рдЧрдИ рд╣реИред
рдЬрд┐рдпреЛрдЖрдИрдкреА рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдореБрдЦреНрдп рд▓рд╛рднред
- рдЫреЛрдЯрд╛ рдЖрдзрд╛рд░ рдЖрдХрд╛рд░ рдкреНрд░рддрд┐ рд░реЗрдВрдЬ 4 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд┐рдпреЛрдЖрдИрдкреА рдмрд╛рдЗрдирд░реА рдмреЗрд╕ рдХрд╛ рд╡рдЬрди 1.2 рдПрдордмреА рд╣реИ, рдЬрдмрдХрд┐ рдПрд╕рдПрдХреНрд╕рдЬреАрдУ 2 рдХрд╛ рд╡рдЬрди 0.62 рдПрдордмреА рд╣реИред
- рдмрд╣реБрдд рдЙрдЪреНрдЪ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐ (рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ)ред
- рдбрд┐рд╕реНрдХ рд╕реЗ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдкрдврд╝рддреА рд╣реИ (3 + 1 * рдПрди, рдЬрд╣рд╛рдВ рдПрди рдЖрдИрдкреА рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ)ред
- рдмреИрдЪ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдореЛрдбред
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) {
рдпрджрд┐ рдЖрдк mb_internal_encoding рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрдд рдореЗрдВ рдЧрддрд┐ 6600 рдЖрдИрдкреА / рд╕реЗрдХрдВрдб рддрдХ рдмрдврд╝ рдЬрд╛рдПрдЧреА - рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╡реГрджреНрдзрд┐ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рд╢рд╛рдпрдж рдЬрд┐рдпреЛрдЖрдИрдкреА рд╕рд┐рдЯреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝рд┐рдпрд╛рдВ рдереАрдВред
рдЬреИрд╕рд╛ рдХрд┐ SxGeo рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдмрд╣реБрдд рдХрдо рд╣реИрдВред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ рднреА рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмреИрдЪ + рдореЗрдореЛрд░реА рдореЛрдб рдореЗрдВ рдпрд╣ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд 40% рд╡реГрджреНрдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЬреЛ рд▓реЛрдЧ
SxGeo 2 рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдЪреНрдЫрд╛рдУрдВ рдФрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдпреБрдкреАрдбреАред рдореИрдВрдиреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ 2 рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ LIMIT 1 рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ MySQL рдмрд╣реБрдд рд╕реБрд╕реНрдд, рдХрд╣реАрдВ 3-5 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред