Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ

PHP рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдордорд╛ рд╣рд╛рд▓ Tarantool рд╕рд░реНрднрд░рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рджреБрдИ рдХрдиреЗрдХреНрдЯрд░рд╣рд░реВ рдЫрдиреН - рдпреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ PECL рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛред tarantool/tarantool-php, C рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ, рд░ tarantool-php/client, PHP рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛред рдо рдкрдЫрд┐рд▓реНрд▓реЛрдХреЛ рд▓реЗрдЦрдХ рд╣реБрдБред

рдпрд╕ рд▓реЗрдЦрдорд╛, рдо рджреБрдмреИ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдгрдХреЛ рдирддрд┐рдЬрд╛рд╣рд░реВ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ рд░ рджреЗрдЦрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдХрд╕рд░реА, рдХреЛрдбрдорд╛ рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрд╕рдБрдЧ, рддрдкрд╛рдЗрдБрд▓реЗ 3-5 рдкреНрд░рджрд░реНрд╢рди рд╡реГрджреНрдзрд┐ рд╣рд╛рд╕рд┐рд▓ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛!).

рд╣рд╛рдореА рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреЗрдЫреМрдВ?

рд╣рд╛рдореА рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреЗрдЫреМрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕, рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕-рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ рдЪрд▓реНрдиреЗ рдХрдиреЗрдХреНрдЯрд░рд╣рд░реВред ЁЯЩВ рд╣рд╛рдореА рдкрдирд┐ рдЬрдбрд╛рдирдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдХреЛрдб рдЖрдлреИрдВ рдЫреБрди рдЪрд╛рд╣рдБрджреИрдиреМрдВред рддрдкрд╛рдИрд▓реЗ рдЪрд╛рд╣рд╛рдиреБ рднрдПрдХреЛ рдХреБрд░рд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╣рд╛рд▓ рдзреЗрд░реИ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН:

  • рд╕реНрд╡реЛрд▓ - PHP рдХреЛ рд▓рд╛рдЧрд┐ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдлреНрд░реЗрдорд╡рд░реНрдХред Alibaba рд░ Baidu рдЬрд╕реНрддрд╛ рдЗрдиреНрдЯрд░рдиреЗрдЯ рджрд┐рдЧреНрдЧрдЬрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд╕рдВрд╕реНрдХрд░рдг 4.1.0 рджреЗрдЦрд┐ рдПрдХ рдЬрд╛рджреБрдИ рд╡рд┐рдзрд┐ рджреЗрдЦрд╛ рдкрд░реНрдпреЛ SwooleRuntime ::enableCoroutine(), рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ "рд╕рд┐рдВрдХреНрд░реЛрдирд╕ PHP рдиреЗрдЯрд╡рд░реНрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрд╣рд░реВрд▓рд╛рдИ рдХреЛрдбрдХреЛ рдПрдХ рд▓рд╛рдЗрдирдХреЛ рд╕рд╛рде рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди" рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  • Async рд╣рд╛рд▓ рд╕рдореНрдо PHP рдорд╛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдзреЗрд░реИ рдЖрд╢рд╛рдЬрдирдХ рд╡рд┐рд╕реНрддрд╛рд░ рдерд┐рдпреЛред рд╣рд╛рд▓рд╕рдореНрдо рдХрд┐рди ? рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдорд▓рд╛рдИ рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐, рд▓реЗрдЦрдХрд▓реЗ рднрдгреНрдбрд╛рд░ рд╣рдЯрд╛рдпреЛ рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рднрд╡рд┐рд╖реНрдпрдХреЛ рднрд╛рдЧреНрдп рдЕрд╕реНрдкрд╖реНрдЯ рдЫред рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫ рдПрдХ рдХрд╛рдБрдЯрд╛рдмрд╛рдЯред Swoole рдЬрд╕реНрддреИ, рдпреЛ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирд▓реЗ TCP рд░ TLS рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВрдХреЛ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реЗрд░ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдиреА рд╕рдХреНрд╖рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдирд╛рдбреАрдХреЛ рдлреНрд▓рд┐рдХрдХреЛ рд╕рд╛рде рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдЖрдлреНрдиреЛ рдкреНрдпрд╛рдиреНрдЯ рдЦреЛрд▓реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпреЛ рд╡рд┐рдХрд▓реНрдк рдорд╛рд░реНрдлрдд рдЧрд░рд┐рдиреНрдЫ "async.tcp = 1"ред
  • рд╕рдорд╛рдирд╛рдВрддрд░ - phpdbg, apcu, pthreads, pcov, uopz рдЬрд╕реНрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рд▓реЗрдЦрдХ рдЬреЛ рдкреНрд░рд╕рд┐рджреНрдз рдЬреЛ рд╡рд╛рдЯрдХрд┐рдиреНрд╕рдмрд╛рдЯ рдПрдХрджрдо рдирдпрд╛рдБ рд╡рд┐рд╕реНрддрд╛рд░ред рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирд▓реЗ PHP рдорд╛ рдорд▓реНрдЯрд┐рдереНрд░реЗрдбрд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ API рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рд░ pthreads рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд░реВрдкрдорд╛ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫред рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕реАрдорд╛ рднрдиреЗрдХреЛ рдпреЛ рд╣реЛ рдХрд┐ рдпрд╕рд▓реЗ PHP рдХреЛ ZTS (Zend Thread Safe) рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдорд╛рддреНрд░ рдХрд╛рдо рдЧрд░реНрдЫред

рд╣рд╛рдореА рдХрд╕рд░реА рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреЗрдЫреМрдВ?

рд▓реЗрдЦреНрдиреЗ-рдЕрдЧрд╛рдбрд┐ рд▓рдЧрд┐рдЩ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдПрдХреЛрд╕рдБрдЧ рдЯрд╛рд░рдиреНрдЯреБрд▓ рдЙрджрд╛рд╣рд░рдг рд╕реБрд░реБ рдЧрд░реМрдВ (wal_mode = рдХреБрдиреИ рдкрдирд┐ рдЫреИрди) рд░ рдмрдвреЗрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдмрдлрд░ (рдкрдвреНрдиреБрд╣реЛрд╕реН = 1 * 1024 * 1024)ред рдкрд╣рд┐рд▓реЛ рд╡рд┐рдХрд▓реНрдкрд▓реЗ рдбрд┐рд╕реНрдХрдХреЛ рд╕рд╛рде рдХрд╛рдо рд╣рдЯрд╛рдЙрдиреЗрдЫ, рджреЛрд╕реНрд░реЛрд▓реЗ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рдмрдлрд░рдмрд╛рдЯ рдердк рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдвреНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрджрдЫ рд░ рдпрд╕реИрд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдХрдо рдЧрд░реНрджрдЫред

рдбреЗрдЯрд╛ (рд╕рдореНрдорд┐рд▓рди, рдореЗрдЯрд╛рдЙрдиреЗ, рдкрдвреНрдиреЗ, рдЖрджрд┐) рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдмреЗрдиреНрдЪрдорд╛рд░реНрдХ рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐, рдПрдХ memtx рд╕реНрдкреЗрд╕ (рдкреБрди:) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреЗрдЫ, рдЬрд╕рдорд╛ рдкреНрд░рд╛рдердорд┐рдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдорд╛рдирд╣рд░реВ рдХреНрд░рдордмрджреНрдз рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдирд╣рд░реВрдХреЛ рдЬрдирд░реЗрдЯрд░рджреНрд╡рд╛рд░рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫред (рдХреНрд░рдо)ред
рд╕реНрдкреЗрд╕ DDL рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

space = box.schema.space.create(config.space_name, {id = config.space_id, temporary = true})
space:create_index('primary', {type = 'tree', parts = {1, 'unsigned'}, sequence = true})
space:format({{name = 'id', type = 'unsigned'}, {name = 'name', type = 'string', is_nullable = false}})

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рдмреЗрдиреНрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рдЙрдиреБ рдЕрдШрд┐, рдард╛рдЙрдБ рдлрд╛рд░рдордХреЛ 10,000 рдЯреБрдкрд▓рд▓реЗ рднрд░рд┐рдПрдХреЛ рдЫред

{id, "tupl╨╡_<id>"}

Tuples рдПрдХ рдЕрдирд┐рдпрдорд┐рдд рдХреБрдЮреНрдЬреА рдорд╛рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╣реБрдБрдЪ рдЧрд░рд┐рдиреНрдЫред

рдмреЗрдиреНрдЪрдорд╛рд░реНрдХ рдЖрдлреИрдВ рд╕рд░реНрднрд░рдорд╛ рдПрдХрд▓ рдЕрдиреБрд░реЛрдз рд╣реЛ, рдЬреБрди 10,000 рдкрдЯрдХ (рдХреНрд░рд╛рдиреНрддрд┐рд╣рд░реВ) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди, рдмрд╛рд░реАрдорд╛, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд╣рд░реВрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред 5 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд╣рд░реВ рдмреАрдЪрдХреЛ рд╕рдмреИ рд╕рдордп рд╡рд┐рдЪрд▓рдирд╣рд░реВ 3%* рдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рддреНрд░реБрдЯрд┐ рднрд┐рддреНрд░ рдирднрдПрд╕рдореНрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд╣рд░реВ рджреЛрд╣реЛрд░реНрдпрд╛рдЗрдиреНрдЫред рдпрд╕ рдкрдЫрд┐, рдФрд╕рдд рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЗрдиреНрдЫред рдкреНрд░реЛрд╕реЗрд╕рд░рд▓рд╛рдИ рдереНрд░реЛрдЯрд▓ рдЧрд░реНрдирдмрд╛рдЯ рд░реЛрдХреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд╣рд░реВ рдмреАрдЪ рез рд╕реЗрдХреЗрдиреНрдб рдкрдЬ рдЫред рд▓реБрдЖрдХреЛ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЕрдШрд┐ рдЕрд╕рдХреНрд╖рдо рд╣реБрдиреНрдЫ рд░ рдпреЛ рдкреВрд░рд╛ рднрдПрдкрдЫрд┐ рд╕реБрд░реБ рдЧрд░реНрди рдмрд╛рдзреНрдп рд╣реБрдиреНрдЫред PHP рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд╡рд▓ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ, рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░рд┐рдЩ рд╕рдХреНрд╖рдо рд░ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдПрдХреЛ рд╕рд╛рде рд╕реБрд░реВ рдЧрд░рд┐рдПрдХреЛ рдЫред

* рдХреНрд░рд╛рдиреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд░ рддреНрд░реБрдЯрд┐ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдмреЗрдиреНрдЪрдорд╛рд░реНрдХ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдкрд░рд┐рдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг

рддрд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдорд╣рд░реВ MacBookPro (2015), рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо - Fedora 30 (kernel рд╕рдВрд╕реНрдХрд░рдг 5.3.8-200.fc30.x86_64) рдорд╛ рдмрдирд╛рдЗрдПрдХреЛ рдерд┐рдпреЛред рдЯрд╛рд░рдиреНрдЯреБрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд╕рд╛рде рдбрдХрд░рдорд╛ рд╕реБрд░реВ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ "--network host".

рдкреНрдпрд╛рдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ:

Tarantool: 2.3.0-115-g5ba5ed37e
рдбрдХрд░: 19.03.3, a872fc2f86 рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН
PHP: 7.3.11 (cli) (рдирд┐рд░реНрдорд┐рдд: 22 рдЕрдХреНрдЯреЛрдмрд░ 2019 08:11:04)
tarantool/рдЧреНрд░рд╛рд╣рдХ: 0.6.0
rybakit/msgpack: 0.6.1
ext-tarantool: 0.3.2 (+ 7.3 рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрдпрд╛рдЪ)*
ext-msgpack: 2.0.3
ext-async: 0.3.0-8c1da46
ext-swoole: 4.4.12
ext-parallel: 1.1.3

* рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрдиреЗрдХреНрдЯрд░рд▓реЗ PHP рд╕рдВрд╕реНрдХрд░рдг > 7.2 рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИрдиред PHP 7.3 рдорд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрдореНрдкрд╛рдЗрд▓ рд░ рдЪрд▓рд╛рдЙрди, рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛ рдкреНрдпрд╛рдЪ.

╨а╨╡╨╖╤Г╨╗╤М╤В╨░╤В╤Л

рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЛрдб

Tarantool рдкреНрд░реЛрдЯреЛрдХрд▓ рдмрд╛рдЗрдирд░реА рдврд╛рдБрдЪрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ MessagePack рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдХреНрд░рдордмрджреНрдз рдЧрд░реНрдиред PECL рдХрдиреЗрдХреНрдЯрд░рдорд╛, рдХреНрд░рдордмрджреНрдзрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рдЧрд╣рд┐рд░рд╛рдЗрдорд╛ рд▓реБрдХреЗрдХреЛ рдЫ рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реНрдпрд╛рдгреНрдб рдХреЛрдбрдмрд╛рдЯ рдЗрдиреНрдХреЛрдбрд┐рдЩ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдЫред рд╕рдореНрднрд╡ рджреЗрдЦрд┐рджреИрдиред рдПрдХ рд╢реБрджреНрдз PHP рдХрдиреЗрдХреНрдЯрд░, рдпрд╕рдХреЛ рд╡рд┐рдкрд░рд┐рдд, рдорд╛рдирдХ рдПрдиреНрдХреЛрдбрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реЗрд░ рд╡рд╛ рдЖрдлреНрдиреИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрдиреНрдХреЛрдбрд┐рдЩ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рддреНрдпрд╣рд╛рдБ рдмрдХреНрд╕ рдмрд╛рд╣рд┐рд░ рджреБрдИ рдПрдиреНрдХреЛрдбрд░рд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН, рдПрдЙрдЯрд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ msgpack/msgpack-php (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ MessagePack PECL рд╡рд┐рд╕реНрддрд╛рд░), рдЕрд░реНрдХреЛ рд╕рдХреНрд░рд┐рдп рдЫ rybakit/msgpack (рд╢реБрджреНрдз PHP рдорд╛)ред

рдХрдиреЗрдХреНрдЯрд░рд╣рд░реВ рддреБрд▓рдирд╛ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореА PHP рдХрдиреЗрдХреНрдЯрд░рдХреЛ рд▓рд╛рдЧрд┐ MessagePack рдПрдиреНрдХреЛрдбрд░рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдорд╛рдкрди рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдердк рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ рд╣рд╛рдореА рд╕рдмреИрднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рдирддрд┐рдЬрд╛ рджреЗрдЦрд╛рдЙрдиреЗ рдПрдЙрдЯрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
рдпрджреНрдпрдкрд┐ PHP рд╕рдВрд╕реНрдХрд░рдг (рд╢реБрджреНрдз) рдЧрддрд┐рдорд╛ PECL рд╡рд┐рд╕реНрддрд╛рд░ рднрдиреНрджрд╛ рдХрдо рдЫ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдо рдЕрдЭреИ рдкрдирд┐ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБред rybakit/msgpack, рдХрд┐рдирднрдиреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ MessagePack рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирдорд╛ рдврд╛рдБрдЪрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ рдорд╛рддреНрд░ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЕрдиреБрдХреВрд▓рди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рд╕рдорд░реНрдерди рдЫреИрди, рдЬрд╕рдХреЛ рдмрд┐рдирд╛ рддрдкрд╛рдЗрдБ рджрд╢рдорд▓рд╡ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрд╣реБрдиреЗ рдЫреИрди - Tarantool 2.3 рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдирдпрд╛рдБ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░) рд░ рдЕрдиреНрдп рдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реБ (PHP 7.4 рд╕рдВрдЧ рдЕрдиреБрдХреВрд▓рддрд╛ рдореБрджреНрджрд╛рд╣рд░реВ рд╕рд╣рд┐рдд)ред рдЦреИрд░, рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рддреНрдпрд╛рдЧ рджреЗрдЦрд┐рдиреНрдЫред

рддреНрдпрд╕реЛрднрдП, рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЛрдбрдорд╛ рдХрдиреЗрдХреНрдЯрд░рд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдорд╛рдкрди рдЧрд░реМрдВ:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
рдЧреНрд░рд╛рдлрдмрд╛рдЯ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ, PECL рдХрдиреЗрдХреНрдЯрд░ (Tarantool) рд▓реЗ PHP рдХрдиреЗрдХреНрдЯрд░ (рдХреНрд▓рд╛рдЗрдиреНрдЯ) рдХреЛ рддреБрд▓рдирд╛рдорд╛ рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди рджреЗрдЦрд╛рдЙрдБрдЫред рддрд░ рдпреЛ рдЕрдЪрдореНрдордХреЛ рдХреБрд░рд╛ рд╣реЛрдЗрди, рдкрдЫрд┐рдХреЛ, рдврд┐рд▓реЛ рднрд╛рд╖рд╛рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреБрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╡рд╛рд╕реНрддрд╡рдорд╛ рдзреЗрд░реИ рдХрд╛рдо рдЧрд░реНрджрдЫ: рдкреНрд░рддреНрдпреЗрдХ рдХрд▓рдХреЛ рд╕рд╛рде рдирдпрд╛рдБ рд╡рд╕реНрддреБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫред рдЕрдиреБрд░реЛрдз ╨╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (рдЪрдпрдирдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ - рдкрдирд┐ рдорд╛рдкрджрдгреНрдб, рд░ рдЕрдкрдбреЗрдЯ/рдЕрдкреНрд╕рд░реНрдЯрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ - рд╕рдЮреНрдЪрд╛рд▓рди), рдЕрд▓рдЧ рд╕рдВрд╕реНрдерд╛рд╣рд░реВ рдЬрдбрд╛рди, рдкреНрдпрд╛рдХрд░ ╨╕ рд╕рдЮреНрдЪрд╛рд▓рдирдХрд░реНрддрд╛ рддрд┐рдиреАрд╣рд░реВ рдкрдирд┐ рдУрднрд░рд╣реЗрдб рдердкреНрдЫрдиреНред рдЬрд╛рд╣рд┐рд░ рдЫ, рд▓рдЪрд┐рд▓реЛрдкрди рдПрдХ рдореВрд▓реНрдп рдорд╛ рдЖрдЙрдБрдЫред рдпрджреНрдпрдкрд┐, рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, PHP рджреЛрднрд╛рд╖реЗрд▓реЗ рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди рджреЗрдЦрд╛рдЙрдБрджрдЫ, рдпрджреНрдпрдкрд┐ рддреНрдпрд╣рд╛рдБ рднрд┐рдиреНрдирддрд╛ рдЫ, рдпреЛ рдирдЧрдгреНрдп рдЫ рд░, рд╕рд╛рдпрдж, PHP 7.4 рдорд╛ рдкреНрд░рд┐рд▓реЛрдбрд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдЕрдЭ рдХрдо рд╣реБрдиреЗрдЫ, PHP 8 рдорд╛ JIT рдЙрд▓реНрд▓реЗрдЦ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЕрдЧрд╛рдбрд┐ рдмрдвреМрдВред Tarantool 2.0 SQL рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛред SQL рдкреНрд░реЛрдЯреЛрдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЪрдпрди, рд╕рдореНрдорд┐рд▓рд┐рдд, рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд░ рдореЗрдЯрд╛рдЙрдиреЗ рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ рд░ noSQL (рдмрд╛рдЗрдирд░реА) рд╕рдордХрдХреНрд╖рд╣рд░реВрд╕рдБрдЧ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рддреБрд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
SQL рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдзреЗрд░реИ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдЫреИрдирдиреН (рдорд▓рд╛рдИ рд╕рдореНрдЭрд╛рдЙрди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рд╣рд╛рдореА рдЕрдЭреИ рдкрдирд┐ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЛрдб рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджреИрдЫреМрдВ)ред рдЬреЗ рд╣реЛрд╕реН, рдо рдпрд╕ рдмрд╛рд░реЗ рд╕рдордп рдЕрдЧрд╛рдбреА рдирд┐рд░рд╛рд╢ рд╣реБрдиреЗ рдЫреИрди; SQL рд╕рдорд░реНрдерди рдЕрдЭреИ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдЕрдиреНрддрд░реНрдЧрдд рдЫ (рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рд▓реИ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рдорд░реНрдерди рдердкрд┐рдПрдХреЛ рдерд┐рдпреЛред рддрдпрд╛рд░ рдмрдпрд╛рди) рд░, рд╕реВрдЪреА рджреНрд╡рд╛рд░рд╛ рдиреНрдпрд╛рдп рдЧрд░реНрджреИ рдореБрджреНрджрд╛рд╣рд░реВ, SQL рдЗрдиреНрдЬрд┐рдирд▓реЗ рднрд╡рд┐рд╖реНрдпрдорд╛ рдзреЗрд░реИ рдЕрдиреБрдХреВрд▓рдирд╣рд░реВ рдкрд╛рд░ рдЧрд░реНрдиреЗрдЫред

async

рдареАрдХ рдЫ, рдЕрдм рд╣реЗрд░реМрдВ рдХрд╕рд░реА Async рд╡рд┐рд╕реНрддрд╛рд░рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдорд╛рдерд┐рдХреЛ рдирддрд┐рдЬрд╛рд╣рд░реВ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫред рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирд▓реЗ рдХреЛрд░рд╛рдЙрдЯрд┐рдирд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред рд╣рд╛рдореАрд▓реЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд░реВрдкрдорд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреМрдВ рдХрд┐ рд╣рд╛рдореНрд░реЛ рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрд░реБрдЯрд┐рдирд╣рд░реВрдХреЛ рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ 25 рд╣реЛ:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
10,000 рдХреЛрд░реБрдЯрд┐рдирд╣рд░реВрдорд╛ резреж,режрежреж рдЕрдкрд░реЗрд╢рдирд╣рд░реВ "рд╕реНрдкреНрд░реЗрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН" рд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдХреЗ рд╣реБрдиреНрдЫ:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд╕рдВрдЦреНрдпрд╛ 3 рдЧреБрдгрд╛ рднрдиреНрджрд╛ рдмрдвреЗрдХреЛ рдЫ tarantool-php/client!

рджреБрдЦрдХреЛ рдХреБрд░рд╛, PECL рдХрдиреЗрдХреНрдЯрд░ ext-async рд╕рдБрдЧ рд╕реБрд░реБ рднрдПрдиред

SQL рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗ рд╣реЛ?

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдореЛрдбрдорд╛ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХрд▓ рд░ SQL рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛ рддреНрд░реБрдЯрд┐рдХреЛ рдорд╛рд░реНрдЬрд┐рди рднрд┐рддреНрд░ рднрдпреЛред

рд╕реНрд╡реЛрд▓

рдлреЗрд░рд┐ рд╣рд╛рдореА рдХреЛрд░реБрдЯрд┐рдирд╣рд░реВрдХреЛ рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ, рдпрд╕ рдкрдЯрдХ рд╕реНрд╡реВрд▓рдХреЛ рд▓рд╛рдЧрд┐:
Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
25 рдорд╛ рд░реЛрдХреМрдВред Async рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирдХреЛ рд░реВрдкрдорд╛ рдЙрд╣реА рдЯреНрд░рд┐рдХ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН - 10,000 рдХреЛрд░реБрдЯрд┐рдирд╣рд░реВ рдмреАрдЪ 25 рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВ рд╡рд┐рддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореА рдЕрд░реНрдХреЛ рдкрд░реАрдХреНрд╖рдг рдердкреНрдиреЗрдЫреМрдВ рдЬрд╕рдорд╛ рд╣рд╛рдореА рд╕рдмреИ рдХрд╛рдорд▓рд╛рдИ 2 рджреБрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрдиреЗрдЫреМрдВ (рдЕрд░реНрдерд╛рдд, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ 5,000 рдХреЛрд░рд╛рдЙрдЯрд┐рдирд╣рд░реВрдорд╛ 25 рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдиреЗрдЫ)ред рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреЗрдЫ SwooleProcess.

рдкрд░рд┐рдгрд╛рдорд╣рд░реБ:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
Swole рд▓реЗ рдПрдЙрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдЪрд▓реНрджрд╛ Async рдХреЛ рддреБрд▓рдирд╛рдорд╛ рдереЛрд░реИ рдХрдо рдирддрд┐рдЬрд╛ рджреЗрдЦрд╛рдЙрдБрджрдЫ, рддрд░ 2 рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд╕рдБрдЧ рдЪрд┐рддреНрд░ рдирд╛рдЯрдХреАрдп рд░реВрдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ (рдирдореНрдмрд░ 2 рд╕рдВрдпреЛрдЧрд▓реЗ рдЫрдиреЛрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрди; рдореЗрд░реЛ рдореЗрд╕рд┐рдирдорд╛, рдпреЛ 2 рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдерд┐рдП рдЬрд╕рд▓реЗ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрд╛рдЙрдБрджрдЫ)ред

рд╡реИрд╕реЗ, Async рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирд╕рдБрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдкреАрдЖрдИ рдкрдирд┐ рдЫ, рддрд░ рддреНрдпрд╣рд╛рдБ рдореИрд▓реЗ рдПрдХ рд╡рд╛ рдмрдвреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ рдЪрд▓рд╛рдЙрдирдмрд╛рдЯ рдХреБрдиреИ рднрд┐рдиреНрдирддрд╛ рджреЗрдЦреЗрдХреЛ рдЫреИрди (рдпреЛ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рдореИрд▓реЗ рдХрддреИ рдЧрдбрдмрдб рдЧрд░реЗрдХреЛ рдЫреБ)ред

SQL рдмрдирд╛рдо рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХрд▓:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
Async рдХреЛ рд░реВрдкрдорд╛, рдмрд╛рдЗрдирд░реА рд░ SQL рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдореЛрдбрдорд╛ рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫред

рд╕рдорд╛рдирд╛рдВрддрд░

рдХрд┐рдирдХреА рд╕рдорд╛рдирд╛рдиреНрддрд░ рд╡рд┐рд╕реНрддрд╛рд░ coroutines рдХреЛ рдмрд╛рд░реЗ рдорд╛ рдЫреИрди, рддрд░ рдереНрд░реЗрдб рдХреЛ рдмрд╛рд░реЗ рдорд╛, рд╣рд╛рдореА рд╕рдорд╛рдирд╛рдВрддрд░ рдереНрд░реЗрдб рдХреЛ рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ рдорд╛рдкрди рдЧрд░реМрдВ:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
рдпреЛ рдореЗрд░реЛ рдореЗрд╕рд┐рдирдорд╛ 16 рдЫред резрем рд╕рдорд╛рдирд╛рдиреНрддрд░ рдереНрд░реЗрдбрд╣рд░реВрдорд╛ рдХрдиреЗрдХреНрдЯрд░ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рдирддрд┐рдЬрд╛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рдирд╣рд░реВ рднрдиреНрджрд╛ рдкрдирд┐ рд░рд╛рдореНрд░реЛ рдЫ (2 рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕реНрд╡реВрд▓рд▓рд╛рдИ тАЛтАЛрдЧрдгрдирд╛ рдЧрд░реНрджреИрди)ред рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ PECL рдХрдиреЗрдХреНрдЯрд░рдХреЛ рд▓рд╛рдЧрд┐, рдЕрдкрдбреЗрдЯ рд░ рдЕрдкреНрд╕рд░реНрдЯ рдЕрдкрд░реЗрд╕рдирд╣рд░реВ рдЦрд╛рд▓реА рдЫрдиреНред рдпреЛ рддрдереНрдпрдХреЛ рдХрд╛рд░рдг рд╣реЛ рдХрд┐ рдпреА рдЕрдкрд░реЗрд╕рдирд╣рд░реВ рддреНрд░реБрдЯрд┐рдХреЛ рд╕рд╛рде рдЕрд╕рдлрд▓ рднрдП - рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рдХрд┐ рдпреЛ ext-parallel, ext-tarantool, рд╡рд╛ рджреБрдмреИрдХреЛ рдЧрд▓реНрддреА рдерд┐рдпреЛред

рдЕрдм SQL рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛ рдЧрд░реМрдВ:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ
рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдкрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрдиреЗрдХреНрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЧреНрд░рд╛рдлрд╕рдБрдЧ рд╕рдорд╛рдирддрд╛ рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН?

рд╕рдБрдЧреИ

рд░ рдЕрдиреНрддрдорд╛, рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдордЧреНрд░ рдЪрд┐рддреНрд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЧреНрд░рд╛рдлрдорд╛ рд╕рдмреИ рдирддрд┐рдЬрд╛рд╣рд░реВрд▓рд╛рдИ рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реМрдВред рдЪрд╛рд░реНрдЯрдорд╛ рдПрдЙрдЯрд╛ рдирдпрд╛рдБ рдкрд░реАрдХреНрд╖рдг рдердкреМрдВ, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рдЧрд░реЗрдХрд╛ рдЫреИрдиреМрдВ - Parallel* рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдорд╛рдирд╛рдиреНрддрд░рдорд╛ Async coroutines рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред рдорд╛рдерд┐рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рдПрдХреАрдХреГрдд рдЧрд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рдкрд╣рд┐рд▓реЗ рдиреИ рдЫ рдЫрд▓рдлрд▓ рднрдПрдХреЛ рдерд┐рдпреЛ рд▓реЗрдЦрдХрд╣рд░реВ, рддрд░ рдХреБрдиреИ рд╕рд╣рдорддрд┐рдорд╛ рдкреБрдЧреНрди рд╕рдХреЗрди, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЖрдлреИрдВ рдЧрд░реНрдиреБрдкрд░реНрдЫред

* рдпреЛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд╕рдВрдЧ Swoole coroutines рд╕реБрд░реБ рдЧрд░реНрди рд╕рдореНрднрд╡ рдерд┐рдПрди; рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рдпреА рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рдЕрд╕рдВрдЧрдд рдЫрдиреНред

рддреНрдпрд╕реИрд▓реЗ, рдЕрдиреНрддрд┐рдо рдкрд░рд┐рдгрд╛рдо:

Async, Swoole рд░ Parallel рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Tarantool рдХреЛ рд▓рд╛рдЧреА PHP рдХрдиреЗрдХреНрдЯрд░рд╣рд░реБ рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рджреИ

рдмрд░реБ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛ рдХреЛ

рдореЗрд░реЛ рд╡рд┐рдЪрд╛рд░рдорд╛, рдирддрд┐рдЬрд╛рд╣рд░реВ рдзреЗрд░реИ рдпреЛрдЧреНрдп рднрдП, рд░ рдХреЗрд╣реА рдХрд╛рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдо рдкрдХреНрдХрд╛ рдЫреБ рдХрд┐ рдпреЛ рд╕реАрдорд╛ рд╣реЛрдЗрди! рддрдкрд╛рдИрд▓реЗ рдпреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдЖрдлреНрдиреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдирд┐рд░реНрдгрдп рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдЫреИрди, рдо рдорд╛рддреНрд░ рднрдиреНрдЫреБ рдХрд┐ рдпреЛ рдореЗрд░реЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдкреНрд░рдпреЛрдЧ рдерд┐рдпреЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрд▓рд╛рдИ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдХреЛ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░реЛрдирд╕ TCP рдХрдиреЗрдХреНрдЯрд░рдмрд╛рдЯ рдХрддрд┐ "рдирд┐рдЪреЛрдб" рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗрд░ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд╣рд░реВ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рдЫрдиреН рднрдиреЗ, рдо рддрдкрд╛рдИрдВрдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрди рдкрд╛рдЙрдБрджрд╛ рдЦреБрд╕реА рд╣реБрдиреЗрдЫреБред рдкреНрд░рдХреНрд╖реЗрдкрдг рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рд╕рдмреИ рдХреЛрдб рдЫреБрдЯреНрдЯреИ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдгреНрдбрд╛рд░рд╣рд░реВ.

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди