рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдСрдирд▓рд╛рдЗрди, рдСрдлрд╝рд▓рд╛рдЗрди рдХрд╛рд░реНрдпрдХреНрд░рдо

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



рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдСрдирд▓рд╛рдЗрди, рдСрдлрд▓рд╛рдЗрди рд╣рдореЗрдВ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдСрдлрд╝рд▓рд╛рдЗрди рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдПрдХ рднреА рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрди 2 рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрд╕ рд░реВрдк рдореЗрдВ рдмреЗрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреМрди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯреИрдм рдХреЛ рдСрдирд▓рд╛рдЗрди / рдСрдлрд▓рд╛рдЗрди рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдЧрд╛, рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рднреА рдЦрд░рд╛рдм рд╣реИред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдкреНрд░рд╛рдЧреИрддрд┐рд╣рд╛рд╕рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред

рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдФрд░ 100% рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдЖрдкрдХреЛ рдСрдирд▓рд╛рдЗрди, рдСрдлрд╝рд▓рд╛рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╣рдореЗрдВ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪрддреА рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реИ, рдпрд╛ рдмрд▓реНрдХрд┐, рд╣рдорд╛рд░реА рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдердо (рдореИрдВрдиреЗ рдЗрд╕реЗ LIP - рд▓реЙрдиреНрдЧ рдкрд┐рдВрдЧ рдЗрдореЗрдЬ рдХрд╣рд╛ рд╣реИ):
1. рдирдИ рдЫрд╡рд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЪрд┐рддреНрд░ рдмрдирд╛рдПрдБ
2. рд╣рдо рдЙрд╕ рдкрд░ рдУрдирд▓реЛрдб рдСрдирд░реЛрд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ
3. рд╣рдо рдЕрдкрдиреЗ рдкрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рдВрдмреЗ рдкреЛрд▓рд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
4. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдЧрд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЗрдВрдЯрд░рдиреЗрдЯ рдЧрд┐рд░ рдЧрдпрд╛, http 50x, рддреЛ рдСрдирд░рд░ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдЖрдЧ рд▓рдЧ рдЬрд╛рдПрдЧреАред рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдФрд░ рддрд╕реНрд╡реАрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░ "рддреЗрдЬ", рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реЗрд╡рд╛ рдСрдлрд╝рд▓рд╛рдЗрди рд╣реИред рдпрджрд┐ рдСрдирд░реЛрд░ рдиреЗ рдЗрд╕ рдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕реЗрд╡рд╛ рдмрд┐рд▓реНрдХреБрд▓ рдСрдлрд╝рд▓рд╛рдЗрди рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд┐рдХреНрдЪрд░ рдкрд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди рдмрд┐рд▓реНрдХреБрд▓ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рд╣реИред рдСрдлрд╝рд▓рд╛рдЗрди 2-4 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдСрдирд▓рд╛рдЗрди 0-15 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред

рдЬрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
1. рдУрдкреЗрд░рд╛, рдПрдХ рдХреНрд░рд┐рд╕рдорд╕ рдЯреНрд░реА рдХреА рддрд░рд╣, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕рдШрд╛рддреА рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ "рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ ..." рдПрдХ рд▓рдВрдмреЗ рдЪрд┐рддреНрд░ рдХрдиреЗрдХреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдареАрдХ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ (iframe, css url, sse) рдФрд░ рдЕрдирдиреНрдд "рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ ..." рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдУрдкреЗрд░рд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓рдВрдмрд╛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ "рддреЗрдЬ" рддрд╕реНрд╡реАрд░ рдХреЛ рдкреВрдЫрддрд╛рдЫ рдХреА рдЬрд╛рддреА рд╣реИ - рдЗрддрдиреА рдЬрд▓реНрджреА рдирд╣реАрдВ, рдереЛрдбрд╝рд╛ рдорд╣рдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред
2. рдПрдлрдПрдл рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдкреЗрдЬ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп Esc рджрдмрд╛рдХрд░ рдПрдХ рд▓рдВрдмреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдорд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рд░реЛрдХрдбрд┐рдлреЙрд▓реНрдЯ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
3. рдЬрдм рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ (рдХреЙрд░реНрдб рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ) рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИрдВрдЧрд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдСрдлрд╝рд▓рд╛рдЗрди рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред

рд▓рд╛рдн:
1. рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рдХрд╡рд░реЗрдЬ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдмрд╕реЗ рдкреНрд░рд╛рдЪреАрди рднреА
2. рдСрдлрд▓рд╛рдЗрди / рдСрдирд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рддреЗрдЬреА рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
3. рдЖрдк рдкрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЧрдиреЗрдХреНрд╕ рдХреЛ рдХрд╕ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рд╕реЗ рдУрд╡рд░рд╣реЗрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдиреБрдХрд╕рд╛рди:
1. рдкреНрд░рддрд┐ рдорд┐рдирдЯ 1Kb рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рд░рд┐рд╕рд╛рд╡ (рдкреНрд░рддрд┐ рд╕рддреНрд░ 1kb рдХреА рд▓рд╛рдЧрдд рдХрдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде)
2. рдкрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
3. рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣реИрдВрдЧрд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди
4. рдпрджрд┐ рдкрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдорд╛рди рдбреЛрдореЗрди рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рддреЛ рд╣рдо 4 рд╕рдВрднрд╛рд╡рд┐рдд http рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рд╕реЗ 1 рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВред

рдХреЛрдб


рдЖрдк рдЗрд╕ рд╕рдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдгред

ping.php - рд╣рдорд╛рд░рд╛ рдкрд┐рдВрдЧ рд╕рд░реНрд╡рд░
<?php isset($_GET['long']) && sleep(55); header("Content-type: image/gif"); header("Expires: Wed, 11 Nov 1998 11:11:11 GMT"); header("Cache-Control: no-cache"); header("Cache-Control: must-revalidate"); // 1x1 gif printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c" . "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", 71,73,70,56,57,97,1,0,1,0,128,255,0,192,192,192,0,0,0,33, 249,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59); ?> 


Nginx HttpEmptyGifModule рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ
 location = /_.gif { empty_gif; } 

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдирдЧрдиреЗрдХреНрд╕ рдкрд░ рдПрдХ рд▓рдВрдмреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреАрдПрдЪрдкреА рдкрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ред

Ping.js
 /** * @fileOveriew Long Polling Image Ping */ (function (window, Image) { /** * Long Polling Image Ping * * Way to detect user's inernet connection */ var Lpip = { BASE_URL: 'ping.php', /** * Long polling request URL. Can be crossdomain */ LONG_POLLING_IMAGE_URL: '?long', /** * Common image request. Can be crossdomain */ IMAGE_URL: '', RECONNECT_TIMEOUT: 15000, _image: null, _stage: 2, _makeImage: function (url) { var image = new Image(); image.onload = Lpip.onImageLoad; image.onerror = Lpip.onImageError; image.src = url + (url.match(/\?/) ? '&' : '?') + Math.random(); return Lpip._image = image; }, /** * @type Boolean */ online: false, /** * @type Boolean */ offline: false, /** * Long polling image request */ watch: function () { // Opera fix if (window.opera) { window.setTimeout(function () { Lpip._makeImage(Lpip.BASE_URL + Lpip.IMAGE_URL); }, Lpip.RECONNECT_TIMEOUT); return; } // For other browsers Lpip._makeImage(Lpip.BASE_URL + Lpip.LONG_POLLING_IMAGE_URL); }, /** * Quick image request */ quick: function () { Lpip._makeImage(Lpip.BASE_URL + Lpip.IMAGE_URL); }, onImageLoad: function () { if (!this.width) { // Error Lpip.onImageError.call(this); } else { // Image ok if (Lpip._stage > 1) { // Internet connection up! Lpip.onConnectionUp(); Lpip.offline = !(Lpip.online = true); } // Reset errors Lpip._stage = 0; // Continue requesting Lpip.watch(); } }, onImageError: function () { Lpip._stage += 1; if (Lpip._stage > 1) { if (Lpip._stage === 2) { // User's internet connection down... Lpip.onConnectionDown(); Lpip.offline = !(Lpip.online = false); } // Try reconnect window.setTimeout(Lpip.quick, Lpip.RECONNECT_TIMEOUT); } else { // Maybe long polling request aborts for some resons // Try to get "quick image" Lpip.quick(); } }, onConnectionUp: function () { window.console && window.console.log('onConnectionUp'); }, onConnectionDown: function () { window.console && window.console.log('onConnectionDown'); } }; // Exporting Lpip window.Ping = { /** * Inits Ping * * @param {Object} [options] * @param {Number} [options.reconnectTimeout=15000] * @param {String} [options.baseUrl='ping.php'] */ init: function (options) { Lpip.RECONNECT_TIMEOUT = options.reconnectTimeout || Lpip.RECONNECT_TIMEOUT; Lpip.BASE_URL = options.baseUrl || Lpip.BASE_URL; // User can cancel long polling request by pressing Esc button in Firefox or Opera if (window.addEventListener) { window.document.addEventListener('keypress', function (event) { if (event.keyCode === 27) { event.preventDefault(); } }, false); } Lpip.quick(); }, /** * Connection up event helper * * Supports only one listener * * @param {Function} callback */ connectionUp: function (callback) { Lpip.onConnectionUp = callback; }, /** * Connection up event helper * * Supports only one listener * * @param {Function} callback */ connectionDown: function (callback) { Lpip.onConnectionDown = callback; }, /** * @returns {Boolean} */ isOnline: function () { return Lpip.online; }, /** * @returns {Boolean} */ isOffline: function () { return Lpip.offline; } }; }(this, this.Image)); 


рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
 <body> <button onclick="checkConnectionStatus()">Connection Status</button> <pre id="log"></pre> <script type="text/javascript" src="Ping.js"></script> <script type="text/javascript"> (function (window, Ping, log) { log.innerHTML += 'Lpip is watching...<br/>'; Ping.connectionUp(function () { log.innerHTML += 'Connection Up<br/>'; }); Ping.connectionDown(function () { log.innerHTML += 'Connection Down<br/>'; }); // call on window.onload to prevent "loading... status" window.onload = function () { Ping.init({ 'baseUrl': '/lpip/ping.php', 'reconnectTimeout': 15000 }); }; window.checkConnectionStatus = function () { window.alert(Ping.isOnline() ? 'Online' : 'Offline'); } }(this, this.Ping, this.document.getElementById('log'))); </script> </body> 


рд▓рд╛рдЗрд╡ рдЙрджрд╛рд╣рд░рдг: azproduction.ru/lpip (рдХреГрдкрдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬрд╛рдВрдЪ рди рдХрд░реЗрдВ)
рд╕реНрд░реЛрдд: narod.ru/disk/6061703001/Ping.rar.html

рдЖрд▓реЛрдЪрдирд╛, рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ nginx рдХреЗ рддрд╣рдд рдкрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрддрд╛ рд╣реИред

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


All Articles