Mysqlnd рдореЗрдВ , MySQL рдХреЛ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛,
рдЕрд░реНрдерд╛рддреН , рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореИрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 3 рдкреНрд░рд╢реНрди (
q1 ,
q2 ,
q3 ) рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп (
t1 ,
t2 ,
t3 ) рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
SELECT 1 AS val, SLEEP(1) AS sleep SELECT 2 AS val, SLEEP(2) AS sleep SELECT 3 AS val, SLEEP(3) AS sleep
рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк
t1 + t2 + t3 (рдЙрджрд╛: 6 рд╕реЗрдХрдВрдб) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдЕрдзрд┐рдХрддрдо (t1, t2, t3) (рдЙрджрд╛: 3 рд╕реЗрдХрдВрдб)
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг, рд╕рд╛рде рд╣реА mysqlnd рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг, рдЬреАрдердм рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд╡рд┐рд╢реЗрд╖
MYSQLI_ASYNC рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
mysqli_query($link, $query, MYSQLI_ASYNC);
рдпрд╣ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕реАрдзреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдКрдкрд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ mysqlnd рдХреЗ рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред Mysqlnd рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреНрд╡реЗрд░реА рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реАрдб рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ (SELECT, рдЖрджрд┐) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ mysqli_result рдХреЗ рдмрдЬрд╛рдп рд╕рд╣реА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди
Mysqli_poll рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕реЗрдЯ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕реНрд░реЛрдд рдореЗрдВ рдЬрд╛рдХрд░ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди
рд╕реЗрд▓реЗрдХреНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реИрдкрд░ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐
stream_select рдлрд╝рдВрдХреНрд╢рди:

Mysqli рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рд▓реА рддреАрди рд╕рд░рдгрд┐рдпрд╛рдБ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд╛рдБрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдЯрд╛рдЗрдордЖрдЙрдЯ (рд╕реЗрдХрдВрдб, [usec]) рдХреЗ рдорд╛рди mysqli_poll рдлрд╝рдВрдХреНрд╢рди рдЗрдирдкреБрдЯ рдХреЛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред Arrays рдХреЛ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рд╕рдВрдЧрдд рд╕реЗрдЯ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдПрдХ рдЯрд╛рдЗрдорд╡реЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЪрдпрдирд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ mysqli рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЪреБрдирд┐рдВрджрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
mysqli_reap_async_query рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдиреБрд░реЛрдз рд╕реЗ рд▓реЙрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдХреЙрд▓ рдХреЗ рдмрд┐рдирд╛, рдмрд╛рдж рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдз "рд╕рд┐рдВрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред" рд░реАрдб рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ (SELECT, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди mysqli_result рдХреЛ рд▓реМрдЯрд╛ рджреЗрдЧрд╛, рдЬрд┐рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж "рдЬрд╛рд░реА" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред ┬╗рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╛рдХреА рдмреВрд▓ рдХреЗ рд▓рд┐рдПред
рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рд╕реАрдкреАрдпреВ рд╕рдордп рдХрд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ рд╣реИред рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рддрдиреА рдЬрд▓реНрджреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА (
рдХреЛрдб ) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░ рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдХреАрдорд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди (рдХреНрд░рд┐рдПрдЯ, рдЕрд▓рд░реНрдЯ, рдбреАрдЖрд░рдУрдкреА) рдФрд░ рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди (INSERT, UPDATE, DELETE) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, ALTER рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ UPDATE (
рдХреЛрдб ) рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
PS рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ:
1. рдореИрдВ mysqli.poll рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рддреНрд░реБрдЯрд┐рдпреЛрдВ (рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕рд░рдгреА рдореЗрдВ mysqli рд╡рд╕реНрддреБ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐) рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рддреЛ plz рд▓рд┐рдЦреЗрдВ, рд▓реЗрдЦ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
2. рдпрджрд┐ рдореИрдВ mysqli_poll рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ segfault (ubuntu 12.04, php 5.3.10) рдорд┐рд▓рддрд╛ рд╣реИред Plz рдЦреБрдж рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
$link = new mysqli('host', 'user', 'password', 'db', 'port'); mysqli_close($link); $read = $error = $reject = array(); $read[] = $error[] = $reject[] = $link; mysqli_poll($read, $error, $reject, 1);
UPD: рдмрдЧ рдЦреБрд▓рд╛ рд╣реИ, рдХреНрд╡рд┐рдХрдлрд┐рдХреНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ