рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рдирд╛рдо рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣реИрдВрдбрд▓рд░рд╕реЙрдХреЗрдЯ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬрд╛рдкрд╛рдиреА, рдЕрдВрдЧреНрд░реЗрдЬреА рдФрд░ рдереЛрдбрд╝рд╛ рд░реВрд╕реА) рдореЗрдВ рдмреЛрд▓реА рдЬрд╛рддреА рд╣реИред
NGX_HTTP_HANDLERSOCKET_JSON_MODULE рдореЙрдбреНрдпреВрд▓ рд╣реИрдВрдбрд▓рд░ рд╕реЙрдХреЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ MySQL рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдФрд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред AJAX рдХрд╛ рд╕реНрдХреЛрдкред
рд╕реНрд░реЛрдд рдХреЛрдбрдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рд╕реАрдорд╛рдПрдБ рдиреАрдЪреЗ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рд╕реНрдерд╛рдкрдирд╛
рд╕реНрдерд╛рдкрдирд╛ рдорд╛рдирдХ рд╣реИ, --add- рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╡рд┐рдиреНрдпрд╛рд╕:
./configure --add-module=/full/path/to/dir/nginx_http_handlersocket_json_module
рдЖрдЧреЗ
make & sudo make install;
рд╡рд┐рдиреНрдпрд╛рд╕
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдерд╛рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг:
рд╕реНрдерд╛рди ~ / json / ( ? + ) / $ {
hs_json ;
hs_json_host 127 реж ред реж ред 1 ;
hs_json_port 9998 ;
hs_json_db рдкрд░реАрдХреНрд╖рдг ;
hs_json_table hs_test ;
hs_json_index рдХреЛрдб ; # рдкреНрд░рд╛рдердорд┐рдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ
hs_json_fields keyid , value , code ;
hs_json_op "=" ; # = рдбрд┐рдлрд╝реЙрд▓реНрдЯ
hs_json_limit 10 ; # рдбрд┐рдлрд╝реЙрд▓реНрдЯ 10
$ hs_request $ 1 рд╕реЗрдЯ рдХрд░реЗрдВ ;
}
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:
hs_json; - рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ
рдХрдиреЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрд╕реНрдЯ рдФрд░ рдкреЛрд░реНрдЯ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╣реИ: 9998, рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛):
hs_json_host 127.0.0.1;
hs_json_port 9998;
hs_json_db рдкрд░реАрдХреНрд╖рдг;
рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА (рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ):
hs_json_table hs_test;
hs_json_fields keyid, value, code;
рдирдореВрдиреЗ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ:
hs_json_index рдХреЛрдб;
рдпрджрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рддреЛ PRIMARY рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдХреЗ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдкрд░реЗрд╢рди рдПрдХ рд╢рд░реНрдд рд╣реИред
hs_json_op "="; # = рдбрд┐рдлрд╝реЙрд▓реНрдЯ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдкрд░реЗрд╢рди рд╕рдВрднрд╡ рд╣реИрдВ: =, <, <=>,> = =
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИ, рддреЛ рдСрдкрд░реЗрд╢рди "рдмрд░рд╛рдмрд░" рд╣реИ
рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕реАрдорд╛:
hs_json_limit 10;
рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ резрежред
рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рд╢рд░реНрдд $ hs_request рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдбреЗрдЯрд╛ рдХреЛ url рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╕реНрдерд╛рди
~ / json
/ ( ? + ) / $
{$ hs_request $ 1 рд╕реЗрдЯ рдХрд░реЗрдВ
;}GET рдпрд╛ COOKIES рдЪрд░ рдХреА рддрд░рд╣:
location ~ /json {
set $hs_request $get_id;
}
рдЙрджрд╛рд╣рд░рдг:
рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрдХреНрд╖рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╢рд╣рд░ рдЪреБрдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реВрдЪреА 10 рд╡рд╕реНрддреБрдУрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рд╢рд╣рд░ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВ:
рд╢рд╣рд░ рдХреЛ
рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП {рдирд╛рдо VARCHAR
( 45 ) ,рдЖрдИрдбреА INT
,рдкреНрд░рд╛рдердорд┐рдХ ( рдЖрдИрдбреА
) ,рдХреБрдВрдЬреА `рдирд╛рдо` ( ` рдирд╛рдо` ) ,}рдпрджрд┐ рдЖрдк рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
location ~ /city/(.+)/${
..... //
hs_json_index name,
hs_json_fields name;
hs_json_op ">=";
set $hs_request $1;
}
рдлрд┐рд░ рдпрд╣ рдХреНрд╡реЗрд░реА рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реЛрдЧрд╛: рд╢рд╣рд░реЛрдВ
рд╕реЗ рдЪрдпрди рдХрд░реЗрдВ * рдЬрд╣рд╛рдВ рд╕реЗ рд╢рд╣рд░_рдирд╛рдо
> = '$ hs_request' рд╕реАрдорд╛ 10рдЕрдиреБрд░реЛрдз URL рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП: http: // myserver.com/city/san/ рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
[{"name":"San Amaro"},{"name":"San Andreas"},{"name":"San Andrs"} ... ]
рддреНрд░реБрдЯрд┐рдпреЛрдВ
- 500 - рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреНрд░реБрдЯрд┐, рдпрд╛ HS рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддреНрд░реБрдЯрд┐
- 503 - рдПрдЪрдПрд╕ рдпрд╛ рдЖрдИ / рдУ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ
рдпрджрд┐ рдХреБрдВрдЬреА рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИ, рддреЛ рдПрдХ рдЦрд╛рд▓реА рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: {[]}, 404 рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдкреНрд░рддрд┐рдмрдВрдз
- рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рдХрд╛ рдореВрд▓реНрдп #Kfine BUFF_SIZE рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдирд┐рдпрдорд┐рдд 1K (1024) рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рд▓ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдирджрдВрдб рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐)
- рдЬрдм рддрдХ рд░реВрд╕реА рдкрддреНрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ (UTF-8), рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ
Bugreport рдореЗрдВ рд╕рднреА рдмрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдкреАрдПрдо рдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ