рдиреЛрдб.рдЬреЗрдПрд╕ рдореЗрдВ рдЯрд╛рдЗрдорд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

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

рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдХрдИ рд╕реЙрдХреЗрдЯ рдореЗрдВ рд╕рдорд╛рди рд╕рдордп-рд╕реАрдорд╛ рд╣реЛрдЧреА, рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЕрд░реНрде рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рд▓реАрдмреНрдпреВрд╡ рд╕реЗ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЯрд╛рдЗрдорд░ )ред рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрд░рд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╕рдорд╛рди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕реЙрдХреЗрдЯ рдХреЗ рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕реЗ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдо рджреЛрдЧреБрдиреА рдХрдиреЗрдХреНрдЯреЗрдб рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЛ рдПрдХрдЬреБрдЯ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рддрдХрдиреАрдХ рдХрд╛рдореЗрдЪреНрдЫрд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ: http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Be_smart_about_timeouts


рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рек рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдЬреЛ рд╣рд▓ рдХреА рдЧрдИ рдереА: рд╣рд░ рдмрд╛рд░ рдЬрдм рд╕реЙрдХреЗрдЯ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдирдпрд╛ рдбреЗрдЯрд╛ рдЖрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЯрд╛рдЗрдорд░ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рддрдХрдиреАрдХ рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ:
1. рдмрдВрдж рдХрд░реЛ, рдлрд┐рд░ рд╕реЗ рд╕рдВрдЧрдард┐рдд рдХрд░рдирд╛ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЯрд╛рдЗрдорд░ рд╢реБрд░реВ рдХрд░рдирд╛ред рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдЦрд░рд╛рдмред рдХреЛрдИ рдкреНрд▓рд╕ рдирд╣реАрдВ рд╣реИрдВред
2. ev_timer_again рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд░ рдмрдврд╝рд╛рдПрдБред рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрдкрд╛рдп рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
3. рдЬрдм рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЯрд╛рдЗрдорд░ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рджреВрд╕рд░реЗ рджреНрд╡рд╛рд░рд╛ рдФрд░ рдХрд┐рддрдиреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдзрд┐рдХ рдХрдард┐рди, рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
4. рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдЯрд╛рдЗрдорд░ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрдард┐рди рднреА, рд▓реЗрдХрд┐рди рдмреЗрд╣рдж рдкреНрд░рднрд╛рд╡реАред
4th рд╡рд┐рдХрд▓реНрдк рдиреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ редjs.

рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ (рдХреЙрд▓рдмреИрдХ, рдорд┐рд╕реЗ, [arg], [...])


рдпрджрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
var start = Date.now(); //    ,     . var Timeout100 = setTimeout(function() {}, 100); //     10 var Timeout110 = setTimeout(function() {}, 100); var Timeout210 = setTimeout(function() {}, 200); 

рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдЧрд╛ред рдЯрд╛рдЗрдорд░.рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдирд╛рдордХ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЪрд░ рд╣реИ, рдЬреЛ рд╕рднреА рд╕рдХреНрд░рд┐рдп рдЯрд╛рдЗрдорд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ (рд▓рдЧрднрдЧ) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 function setTimeout(callback, msecs) { var list = lists[msecs]; //      ,   ,     //     msecs. if (!list) { //    process.binding('timer_wrap').Timer ,  libuv' . list = lists[msecs] = new Timer(); //    ,   . list.ontimeout = ...; //  . list.start(msecs, 0); //  ,       . L.init(list); } //   ,       callback  msecs . var item = Timeout; item._idleStart = Date.now(); //    item._idleTimeout = msecs; //   item._onTimeout = callback; //    //      . // ,         //   item',  ..     ,    //      . L.append(list, item); return item; } 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЯрд╛рдЗрдорд░ рдЪрд░ рдореЗрдВ 2 рдХреБрдВрдЬреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреА:


рд╢реБрд░реВ рдХреЗ рд╕рдордп + 100ms libuv Timer100 рдкрд░ рджрд╕реНрддрдХ рджреЗрдЧрд╛, рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЕрднрд┐рдирдпред рдЗрд╕ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрд╕ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ред

рдпрд╣ рд╣реИрдВрдбрд▓рд░ рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛? рдЗрд╕рдХрд╛ рддрд░реНрдХ рднреА рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
 //      ,     ,    function callback(Timer list, msecs) { var now = Date.now(); var first; //       ,    ,    , //    ,   .   . while(first = L.peek()) { // ,     var wait = item._idleStart + item._idleTimeout - now; //     if (wait <= 0) { //     L.remove(first); //  callback first.onTimeout(); } else { //    wait  list.start(wait, 0); // , ..      -   //       return; } } //     , ,   . //  . list.stop(); //   delete lists[msecs]; } 

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХреЙрд▓рдмреИрдХ 3 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛:
  1. рд╢реБрд░реВ + 100 рдкрд▓:
    1. рдЯрд╛рдЗрдордЖрдЙрдЯ рез рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
    2. рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ Timeout2 рд╕реЗ рдкрд╣рд▓реЗ 10ms рдмрдЪреЗ рд╣реИрдВ, рдЗрд╕ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░реЗрдВ
    3. рдмрд╛рд╣рд░ рдЖрдУред
  2. рдкреНрд░рд╛рд░рдВрдн + 110 рдкрд▓:
    1. рдЯрд╛рдЗрдордЖрдЙрдЯ 2 рдирд┐рд╖реНрдкрд╛рджрд┐рдд;
    2. рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╢реАрдЯ рдЦрд╛рд▓реА рд╣реИ, рдЯрд┐рдорд░ 100 рдФрд░ рдкреНрд░рдореБрдЦ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ [100]ред
    3. рдмрд╛рд╣рд░ рдЖрдУред
  3. рдкреНрд░рд╛рд░рдВрдн + 210 рдкрд▓:
    1. рдЯрд╛рдЗрдордЖрдЙрдЯ 3 рдЪрд▓рд╛рдПрдВ;
    2. рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╢реАрдЯ рдЦрд╛рд▓реА рд╣реИ, рдЯрд┐рдорд░ 200 рдФрд░ рдкреНрд░рдореБрдЦ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ [200]ред
    3. рдмрд╛рд╣рд░ рдЖрдУред


рдХреНрд▓рд┐рдпрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ (рдЯрд╛рдЗрдордЖрдЙрдЯ)


рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд┐рдпрд░рдЯрд╛рдЗрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╡рд░реНрдЧ рдХреЗ рдЙрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
 function clearTimeout(item) { //    . L.remove(item); var msecs = item._idleTimeout; //   var list = lists[msecs]; //   ,  if (list && L.isEmpty(list)) { list.close(); delete lists[msecs]; } } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдЯрд╛рдЗрдорд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдм рд╕реВрдЪреА рдореЗрдВ рд╣рдЯрд╛рдП рдЧрдП рдЖрдЗрдЯрдо рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдПрдЧрд╛, рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреНрд▓рд┐рдпрд░рдЯрд╛рдЗрдо (рдЯрд╛рдЗрдордЖрдЙрдЯ 2) рдЪрд▓рд╛рдХрд░, рд╣рдо рдореБрдбрд╝ рдЬрд╛рдПрдВрдЧреЗ:

рдореЗрдВ


setInterval (рдХреЙрд▓рдмреИрдХ, msecs, [arg], [...]) рдФрд░ clearInterval (рдЕрдВрддрд░рд╛рд▓)


setInterval рдФрд░ clearInterval, setTimeout рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд┐рд╕реА рднреА рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ libuv рдХрд╛ рдЯрд╛рдЗрдорд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд░рд┐рдкреАрдЯ рдореЛрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ msecs рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдЪрд╛рд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рд╕рдм рд╣реИред

рд╕реЙрдХреЗрдЯреНрд╕ (рдиреЗрдЯ рдореЙрдбреНрдпреВрд▓)


рд╕реЙрдХреЗрдЯреНрд╕ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд╕реЙрдХреЗрдЯреНрд╕ рдХреЛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рдирд╣реАрдВ рдмрдирд╛рддреЗ / рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реВрдЪреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЦреБрдж рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдЯрд╛рдЗрдорд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдпрд╛!)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд╕реЙрдХреЗрдЯреНрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _onTimeout рдкрджреНрдзрддрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╡реЗ рдХреЗрд╡рд▓ рдЧреБрдг _idleStart, _idleTimeout (рд╕рдордп рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧреБрдг), _idleNext рдФрд░ _idlePrev (рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдЧреБрдг) рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИрдВред
рдЬрдм рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реЙрдХреЗрдЯ рдХреЛ рдмрд╕ рд╕рдВрдмрдВрдзрд┐рдд рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...

... рдФрд░ рддреБрд░рдВрдд рдЗрд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:


рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡:


  1. рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдиреЛрдб.рдЬреЗрдПрд╕ рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ , рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ () рдХреЛ 5% рддрдХ, рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ 50% рддрдХред
  2. рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рд╣реИред рдЯрд╛рдЗрдорд░ рдХреА рдЭреВрдареА рд╢реБрд░реБрдЖрдд рдХреЛ рд╕рд╣реА рдХрд░рддреЗ рд╣реБрдПред
  3. рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдмрдВрдЯреВ 12.04 (рджреВрд╕рд░реЗ - 11.04) рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдореЗрд░реА рдорд╢реАрдиреЛрдВ рдкрд░ рдиреЛрдб рдмрд┐рдЯреНрд╕ рдореЗрдВ 32 рдмрд┐рдЯ + PAE Date.now () рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ 15 рдЧреБрдирд╛ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд┐рдВрджреБ gettimeofday (2) рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЙрд▓ рд╣реИред 64-рдмрд┐рдЯ Ubuntu 12.10 рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред


рдирд┐рд╖реНрдХрд░реНрд╖:


  1. рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝реЗрдВ - рдЖрдк рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦреЗрдВрдЧреЗред
  2. Node.js рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рдЪреВрдХ рд╣реИрдВред
  3. рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рдХрддрд╛рд░ рдХрд╛ рд░реЗрдХрд┐рдВрдЧ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдФрд░ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИред
  4. рдЖрдВрддрд░рд┐рдХ рдЯрд╛рдЗрдорд░реНрд╕ рдХрд╛ рдЙрддреНрдкрд╛рджрди рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред

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


All Articles