ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel

ืื™ืŸ ื“ื™ PHP ื™ืงืึธื•ืกื™ืกื˜ืึทื ืขืก ื–ืขื ืขืŸ ื“ืขืจื•ื•ื™ื™ึทืœ ืฆื•ื•ื™ื™ ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ Tarantool ืกืขืจื•ื•ืขืจ - ื“ืึธืก ืื™ื– ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ PECL ืคืึทืจืœืขื ื’ืขืจื•ื ื’ tarantool/tarantool-php, ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ C, ืื•ืŸ tarantool-php/client, ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืคืคึผ. ืื™ืš ื‘ื™ืŸ ื“ืขืจ ืžื—ื‘ืจ ืคื•ืŸ ื“ื™ ืœืขืฆื˜ืข.

ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื˜ื™ื™ืœืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’ ื˜ืขืกื˜ื™ื ื’ ืคื•ืŸ ื‘ื™ื™ื“ืข ืœื™ื™ื‘ืจืขืจื™ื– ืื•ืŸ ื•ื•ื™ื™ึทื–ืŸ ื•ื•ื™, ืžื™ื˜ ืžื™ื ื™ืžืึทืœ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ื™ ืงืึธื“, ืื™ืจ ืงืขื ืขืŸ ื“ืขืจื’ืจื™ื™ื›ืŸ ืึท 3-5 ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคืึทืจื’ืจืขืกืขืจืŸ (ืื•ื™ืฃ ืกื™ื ื˜ืขื˜ื™ืฉ ื˜ืขืกืฅ!).

ื•ื•ืึธืก ื•ื•ืขืœืŸ ืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ?

ืžื™ืจ ื•ื•ืขืœืŸ ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ ืื•ื™ื‘ืŸ ื“ืขืจืžืื ื˜ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืงืึทื ืขืงื˜ืขืจื– ืคืœื™ืกื ื“ื™ืง ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืกืœื™, ืคึผืึทืจืึทืœืขืœ, ืื•ืŸ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืกืœื™-ืคึผืึทืจืึทืœืขืœ. ๐Ÿ™‚ ืžื™ืจ ืื•ื™ืš ื˜ืึธืŸ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืงืึธื“ ืคื•ืŸ ื“ื™ ืงืึทื ืขืงื˜ืขืจื– ื–ื™ืš. ืขืก ื–ืขื ืขืŸ ื“ืขืจื•ื•ื™ื™ึทืœ ืขื˜ืœืขื›ืข ื™ืงืกื˜ืขื ืฉืึทื ื– ื‘ื ื™ืžืฆื ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื•ื•ืึธืก ืื™ืจ ื•ื•ื™ืœื˜:

  • ืกื•ื•ืึธืœ - ืึท ื”ื•ื™ืš-ืคืึธืจืฉื˜ืขืœื•ื ื’ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืคืจื™ื™ืžื•ื•ืขืจืง ืคึฟืึทืจ PHP. ื’ืขื•ื•ื™ื™ื ื˜ ื“ื•ืจืš ืึทื–ืึท ืื™ื ื˜ืขืจื ืขื˜ ื“ื–ืฉื™ื™ืึทื ืฅ ื•ื•ื™ ืึทืœื™ื‘ืึทื‘ืึท ืื•ืŸ ื‘ืึทื™ื“ื•. ื–ื™ื ื˜ ื•ื•ืขืจืกื™ืข 4.1.0 ืึท ืžืึทื’ื™ืฉ ืื•ืคึฟืŸ ืื™ื– ืืจื•ื™ืก SwooleRuntime::enableCoroutine(), ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• "ื’ืขืจ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืคืคึผ ื ืขืฅ ืœื™ื™ื‘ืจืขืจื™ื– ืฆื• ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืžื™ื˜ ืื™ื™ืŸ ืฉื•ืจื” ืคื•ืŸ ืงืึธื“."
  • Async ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ื™ื– ืœืขืฆื˜ื ืก ืึท ื–ื™ื™ืขืจ ืคึผืจืึทืžืึทืกื™ื ื’ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืคึฟืึทืจ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืึทืจื‘ืขื˜ ืื™ืŸ PHP. ืคืืจื•ื•ืืก ื‘ื™ื– ืœืขืฆื˜ื ืก? ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ืคึฟืึทืจ ืึท ืกื™ื‘ื” ืื•ืžื‘ืึทืงืึทื ื˜ ืฆื• ืžื™ืจ, ื“ืขืจ ืžื—ื‘ืจ ืื•ื™ืกื’ืขืžืขืงื˜ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜ ื’ื•ืจืœ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื•ืžืงืœืึธืจ. ืื™ืš ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ื ื•ืฆืŸ ืขืก ืื™ื™ื ืขืจ ืคื•ืŸ ืคืึธืจืงืก. ื•ื•ื™ Swoole, ื“ืขื ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœื™ื™ื›ื˜ ื•ื•ืขื ื“ืŸ ื“ื™ื™ืŸ ื”ื•ื™ื–ืŸ ืžื™ื˜ ืึท ืคืœื™ืง ืคื•ืŸ ื“ืขื ื”ืึทื ื˜ื’ืขืœืขื ืง ืฆื• ื’ืขื‘ืŸ ื™ื™ืกื™ื ื’ืงืจืึทื ื™ ื“ื•ืจืš ืจื™ืคึผืœื™ื™ืกื™ื ื’ ื“ื™ ื ืึธืจืžืึทืœ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ TCP ืื•ืŸ TLS ืกื˜ืจื™ืžื– ืžื™ื˜ ื–ื™ื™ืขืจ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ื•ื•ืขืจืกื™ืขืก. ื“ืึธืก ืื™ื– ื’ืขื˜ืืŸ ื“ื•ืจืš ื“ื™ ืึธืคึผืฆื™ืข "async.tcp = 1".
  • ืคึผืึทืจืึทืœืขืœ โ€• ืึท ื’ืึทื ืฅ ื ืฒึทืข ืคึฟืึทืจืœืขื ื’ืขืจื•ื ื’ ืคึฟื•ืŸ ื“ืขื ื‘ืึทืงืึทื ื˜ืŸ ื“ื–ืฉืึธื• ื•ื•ืึทื˜ืงื™ื ืก, ืžื—ื‘ืจ ืคึฟื•ืŸ ืึทื–ืขืœื›ืข ื‘ื™ื‘ืœื™ืึธื˜ืขืงืŸ ื•ื•ื™ phpdbg, apcu, pthreads, pcov, uopz. ื“ื™ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ื’ื™ื˜ ืึทืŸ ืึทืคึผื™ ืคึฟืึทืจ ืžื•ืœื˜ื™ื˜ื”ืจืขืึทื“ื™ื ื’ ืื™ืŸ PHP ืื•ืŸ ืื™ื– ืคึผืึทื–ื™ืฉืึทื ื“ ื•ื•ื™ ืึท ืคืึทืจื‘ื™ื™ึทื˜ ืคึฟืึทืจ ืคึผื˜ื”ืจืขืึทื“ืก. ื ื‘ืึทื˜ื™ื™ื˜ื™ืง ื‘ืึทื’ืจืขื ืขืฆื•ื ื’ ืคื•ืŸ ื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ืึทื– ืขืก ืึทืจื‘ืขื˜ ื‘ืœื•ื™ื– ืžื™ื˜ ื“ื™ ZTS (Zend Thread Safe) ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹PHP.

ื•ื•ื™ ื•ื•ืขืœืŸ ืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ?

ืœืึธืžื™ืจ ืงืึทื˜ืขืจ ืึท Tarantool ื‘ื™ื™ึทืฉืคึผื™ืœ ืžื™ื˜ ืฉืจื™ื™ึทื‘ืŸ ืคืึธืจื•ื™ืก ืœืึธื’ื™ื ื’ ืคืึทืจืงืจื™ืคึผืœื˜ (ื•ื•ืึทืœ_ืžืึธื“ืข = ื’ืึธืจื ื™ื˜) ืื•ืŸ ื’ืขื•ื•ืืงืกืŸ ื ืขืฅ ื‘ืึทืคืขืจ (ืœื™ื™ืขื ืขืŸ ืคืึธืจื•ื™ืก = 1 * 1024 * 1024). ื“ืขืจ ืขืจืฉื˜ืขืจ ืึธืคึผืฆื™ืข ื•ื•ืขื˜ ืขืœื™ืžื™ื ื™ืจืŸ ื“ื™ ืึทืจื‘ืขื˜ ืžื™ื˜ ื“ื™ ื“ื™ืกืง, ื“ื™ ืจื’ืข ื•ื•ืขื˜ ืžืึทื›ืŸ ืขืก ืžืขื’ืœืขืš ืฆื• ืœื™ื™ืขื ืขืŸ ืžืขืจ ืจื™ืงื•ื•ืขืก ืคื•ืŸ ื“ื™ ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ื‘ืึทืคืขืจ ืื•ืŸ ื“ืขืจืžื™ื˜ ืžื™ื ืึทืžื™ื™ื– ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืกื™ืกื˜ืขื ืงืึทืœืœืก.

ืคึฟืึทืจ ื‘ืขื ื˜ืฉืžืึทืจืงืก ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืžื™ื˜ ื“ืึทื˜ืŸ (ื™ื ืกืขืจืฉืึทืŸ, ื“ื™ืœื™ืฉืึทืŸ, ืœื™ื™ืขื ืขืŸ, ืืื–"ื• ื•), ืื™ื™ื“ืขืจ ืื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ื“ืขื ื‘ืขื ื˜ืฉืžืึทืจืง, ืึท ืžืขืžื˜ืงืก ืคึผืœืึทืฅ ื•ื•ืขื˜ ื–ื™ื™ืŸ (ืฉื™ื™ึทืขืš) ื‘ืืฉืืคืŸ, ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืขืจืฉื˜ื™ืง ืื™ื ื“ืขืงืก ื•ื•ืึทืœื•ืขืก ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ื“ื•ืจืš ืึท ื’ืขื ืขืจืึทื˜ืึธืจ ืคื•ืŸ ืึธืจื“ืขืจื“ ื™ื ื˜ืึทื“ื–ืฉืขืจ ื•ื•ืึทืœื•ืขืก. (ืกื™ืงื•ื•ืึทื ืก).
ื“ื™ ืคึผืœืึทืฅ 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>"}

ื˜ื•ืคึผืœืขืก ื–ืขื ืขืŸ ืึทืงืกืขืกื˜ ืžื™ื˜ ืึท ื˜ืจืึทืค ืฉืœื™ืกืœ ื•ื•ืขืจื˜.

ื“ืขืจ ื‘ืขื ื˜ืฉืžืึทืจืง ื–ื™ืš ืื™ื– ืึท ืื™ื™ืŸ ื‘ืขื˜ืŸ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ, ื•ื•ืึธืก ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ 10,000 ืžืืœ (ืจืขื•ื•ืึทืœื•ืฉืึทื ื–), ื•ื•ืึธืก, ืื™ืŸ ืงืขืจ, ื–ืขื ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื™ืŸ ื™ื˜ืขืจื™ื™ืฉืึทื ื–. ื“ื™ ื™ื˜ืขืจืึทื˜ื™ืึธื ืก ื–ืขื ืขืŸ ืจื™ืคึผื™ื˜ื™ื“ ื‘ื™ื– ืึทืœืข ืฆื™ื™ื˜ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื– ืฆื•ื•ื™ืฉืŸ 5 ื™ื˜ืขืจื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื™ืŸ ืึท ืคึผืึทืกื™ืง ื˜ืขื•ืช ืคื•ืŸ 3%*. ื ืึธืš ื“ืขื, ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ื’ืขื ื•ืžืขืŸ. ืขืก ืื™ื– ืึท 1 ืจื’ืข ืคึผื•ื™ื–ืข ืฆื•ื•ื™ืฉืŸ ื™ื˜ืขืจื™ื™ืฉืึทื ื– ืฆื• ืคืึทืจืžื™ื™ึทื“ืŸ ื“ื™ ืคึผืจืึทืกืขืกืขืจ ืคื•ืŸ ื’ืขืจื’ืœ. Lua ืก ืžื™ืกื˜ ืงืึทืœืขืงื˜ืขืจ ืื™ื– ืคืึทืจืงืจื™ืคึผืœื˜ ืื™ื™ื“ืขืจ ื™ืขื“ืขืจ ื™ื˜ืขืจืึทื˜ื™ืึธืŸ ืื•ืŸ ืื™ื– ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ื ืึธืš ืขืก ืงืึทืžืคึผืœื™ืฅ. ื“ืขืจ ืคืคึผ ืคึผืจืึธืฆืขืก ืื™ื– ืœืึธื ื˜ืฉื˜ ื‘ืœื•ื™ื– ืžื™ื˜ ื“ื™ ื™ืงืกื˜ืขื ืฉืึทื ื– ื ื™ื™ื˜ื™ืง ืคึฟืึทืจ ื“ื™ ื‘ืขื ื˜ืฉืžืึทืจืง, ืžื™ื˜ ืจืขื–ื•ืœื˜ืึทื˜ ื‘ืึทืคืขืจื™ื ื’ ืขื ื™ื™ื‘ืึทืœื“ ืื•ืŸ ื“ื™ ืžื™ืกื˜ ืงืึทืœืขืงื˜ืขืจ ืคืึทืจืงืจื™ืคึผืœื˜.

* ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจืขื•ื•ืึทืœื•ืฉืึทื ื–, ื™ื˜ืขืจื™ื™ืฉืึทื ื– ืื•ืŸ ื˜ืขื•ืช ืฉื•ื•ืขืœ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื˜ืฉื™ื™ื ื“ื–ืฉื“ ืื™ืŸ ื“ื™ ื‘ืขื ื˜ืฉืžืึทืจืง ืกืขื˜ื˜ื™ื ื’ืก.

ื˜ืขืกื˜ ืกื•ื•ื™ื•ื•ืข

ื“ื™ ืจืขื–ื•ืœื˜ืื˜ืŸ ืืจื•ื™ืก ืื•ื ื˜ืŸ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืื•ื™ืฃ ืึท ืžืึทืงื‘ืึธืึธืงืคึผืจืึธ (2015), ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื - ืคืขื“ืึธืจืึท 30 (ืงืขืจื ืขืœ ื•ื•ืขืจืกื™ืข 5.3.8-200.fc30.x86_64). Tarantool ืื™ื– ืœืึธื ื˜ืฉื˜ ืื™ืŸ ื“ืึธืงืงืขืจ ืžื™ื˜ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ "--network host".

ืคึผืขืงืœ ื•ื•ืขืจืกื™ืขืก:

Tarantool: 2.3.0-115-g5ba5ed37e
ื“ืึธืงืงืขืจ: 19.03.3, ื‘ื•ื™ืขืŸ ืึท872fc2f86
PHP: 7.3.11 (ืงืœื™) (ื’ืขื‘ื•ื™ื˜: 22 ืืงื˜ืื‘ืขืจ 2019 08:11:04)
ื˜ืึทืจืึทื ื˜ืึธืึธืœ / ืงืœื™ืขื ื˜: 0.6.0
ืจื™ื‘ืึทืงื™ื˜/ืžืกื’ืคึผืึทืง: 0.6.1
ืขืงืกื˜-ื˜ืึทืจืึทื ื˜ืึธืึธืœ: 0.3.2 (+ ืœืึทื˜ืข ืคึฟืึทืจ 7.3)*
ืขืงืกื˜-ืžืกื’ืคึผืึทืง: 2.0.3
ืขืงืกื˜-ืึทืกื™ื ืง: 0.3.0-8c1da46
ืขืงืกื˜-ืกื•ื•ืึธืึธืœ: 4.4.12
ืขืงืกื˜-ืคึผืึทืจืึทืœืขืœ: 1.1.3

* ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ืงืึทื ืขืงื˜ืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ PHP ื•ื•ืขืจืกื™ืข> 7.2. ืฆื• ื–ืึทืžืœืขืŸ ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืื•ื™ืฃ PHP 7.3, ืื™ืš ื’ืขื”ืื˜ ืฆื• ื ื•ืฆืŸ ืœืึทื˜ืข.

ืจืขื–ื•ืœื˜ืึทื˜ืŸ

ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืžืึธื“ืข

ื“ื™ Tarantool ืคึผืจืึธื˜ืึธืงืึธืœ ื ื™ืฆื˜ ืึท ื‘ื™ื™ื ืขืจื™ ืคึฟืึธืจืžืึทื˜ MessagePack ืฆื• ืกื™ืจื™ืึทืœื™ื–ืข ืึทืจื˜ื™ืงืœืขืŸ. ืื™ืŸ ื“ื™ PECL ืงืึทื ืขืงื˜ืขืจ, ืกื™ืจื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ ืื™ื– ืคืึทืจื‘ืึธืจื’ืŸ ื˜ื™ืฃ ืื™ืŸ ื“ื™ ื˜ื™ืคืขื ื™ืฉืŸ ืคื•ืŸ ื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื•ืŸ ืึทืคืขืงืฅ ื“ื™ ืงืึธื“ื™ืจื•ื ื’ ืคึผืจืึธืฆืขืก ืคึฟื•ืŸ ื‘ืึทื ื™ืฆืขืจืœืึทื ื“ ืงืึธื“ ื–ืขื˜ ื ื™ื˜ ืื•ื™ืก ืžืขื’ืœืขืš. ื ืจื™ื™ืŸ PHP ืงืึทื ืขืงื˜ืขืจ, ืื•ื™ืฃ ื“ื™ ืคืึทืจืงืขืจื˜, ื’ื™ื˜ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืงืึทืกื˜ืึทืžื™ื™ื– ื“ื™ ืงืึธื“ื™ืจื•ื ื’ ืคึผืจืึธืฆืขืก ื“ื•ืจืš ืคืึทืจื‘ืจื™ื™ื˜ืขืจืŸ ื“ื™ ื ืึธืจืžืึทืœ ืขื ืงืึธื“ืขืจ ืึธื“ืขืจ ื ื™ืฆืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ. ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ืขื ืงืึธื“ืขืจืก ื‘ื ื™ืžืฆื ืื•ื™ืก ืคื•ืŸ ื“ื™ ืงืขืกื˜ืœ, ืื™ื™ื ืขืจ ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ msgpack/msgpack-php (ืึธืคื™ืฆื™ืขืœ ืžืขืกืขื“ื–ืฉืคึผืึทืงืง ืคึผืขืงืœ ื’ืขืฉืคึผืจื™ื™ื˜), ื“ื™ ืื ื“ืขืจืข ืื™ื– ืื•ื™ืฃ rybakit/msgpack (ืื™ืŸ ืจื™ื™ืŸ ืคืคึผ).

ืื™ื™ื“ืขืจ ืื™ืจ ืคืึทืจื’ืœื™ื™ื›ืŸ ืงืึทื ืขืงื˜ืขืจื–, ืžื™ืจ ื•ื•ืขืœืŸ ืžืขืกื˜ืŸ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ MessagePack ืขื ืงืึธื“ืขืจืก ืคึฟืึทืจ ื“ื™ PHP ืงืึทื ืขืงื˜ืขืจ ืื•ืŸ ืื™ืŸ ื•ื•ื™ื™ึทื˜ืขืจ ื˜ืขืกืฅ ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ื•ื•ืึธืก ื•ื•ื™ื™ึทื–ืŸ ื“ื™ ื‘ืขืกื˜ืขืจ ืจืขื–ื•ืœื˜ืึทื˜:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ื›ืึธื˜ืฉ ื“ื™ PHP ื•ื•ืขืจืกื™ืข (ืจื™ื™ืŸ) ืื™ื– ืขืจื’ืขืจ ืฆื• ื“ื™ PECL ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืื™ืŸ ื’ื™ื›ืงื™ื™ึทื˜, ืื™ืŸ ืคืึทืงื˜ื™ืฉ ืคึผืจืึทื“ื–ืฉืขืงืก ืื™ืš ื•ื•ืึธืœื˜ ื ืึธืš ืจืขืงืึธืžืขื ื“ื™ืจืŸ ื ื™ืฆืŸ ืขืก rybakit/msgpack, ื•ื•ื™ื™ึทืœ ืื™ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ MessagePack ืคืึทืจืœืขื ื’ืขืจื•ื ื’, ื“ื™ ืคึฟืึธืจืžืึทื˜ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืื™ื– ื‘ืœื•ื™ื– ื˜ื™ื™ืœ ื™ืžืคึผืœืึทืžืขื ืึทื“ (ืœืžืฉืœ, ืขืก ืื™ื– ืงื™ื™ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืžื ื”ื’ ื“ืึทื˜ืŸ ื˜ื™ื™ืคึผืก, ืึธืŸ ื•ื•ืึธืก ืื™ืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ื ื•ืฆืŸ ื“ืขืกื™ืžืึทืœ - ืึท ื ื™ื™ึทืข ื“ืึทื˜ืŸ ื˜ื™ืคึผ ื‘ืึทืงืขื ืขื  ืื™ืŸ Tarantool 2.3) ืื•ืŸ ื”ืื˜ ืึท ื ื•ืžืขืจ ืคื•ืŸ ืื ื“ืขืจืข ืคึผืจืึธื‘ืœืขืžืก (ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ ื™ืฉื•ื– ืžื™ื˜ PHP 7.4). ื ื•, ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืงื•ืงื˜ ืคืืจืœืื–ืŸ.

ืึทื–ื•ื™, ืœืึธืžื™ืจ ืžืขืกื˜ืŸ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ ืงืึทื ืขืงื˜ืขืจื– ืื™ืŸ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืžืึธื“ืข:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืคึฟื•ืŸ ื“ื™ ื’ืจืึทืคื™ืง, ื“ื™ PECL ืงืึทื ืขืงื˜ืขืจ (Tarantool) ื•ื•ื™ื™ื–ื˜ ื‘ืขืกืขืจ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืงืึทืžืคึผืขืจื“ ืžื™ื˜ ื“ื™ PHP ืงืึทื ืขืงื˜ืขืจ (ืงืœื™ืขื ื˜). ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื—ื™ื“ื•ืฉ, ื•ื•ื™ื™ึทืœ ื“ื™ ืœืขืฆื˜ืข, ืื™ืŸ ื“ืขืจืฆื• ืฆื• ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื™ืŸ ืึท ืกืœืึธื•ืขืจ ืฉืคึผืจืึทืš, ื˜ืึทืงืข ืึทืจื‘ืขื˜ ืžืขืจ: ืึท ื ื™ื™ึทืข ื›ื™ื™ืคืขืฅ ืื™ื– ื‘ืืฉืืคืŸ ืžื™ื˜ ื™ืขื“ืขืจ ืจื•ืคืŸ ื‘ืขื˜ืŸ ะธ ืขื ื˜ืคืขืจ (ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ ืกืขืœืขืงื˜ - ืื•ื™ืš ืงืจื™ื˜ืขืจื™ืึท, ืื•ืŸ ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ / ืึทืคึผืขืจื˜ - ืึธืคึผืขืจืึทื˜ื™ืึธื ืก), ื‘ืึทื–ื•ื ื“ืขืจืข ืขื ื˜ื™ื˜ื™ื– ืฉื™ื™ึทื›ืขืก, ืคึผืึทืงืขืจ ะธ ื”ืึทื ื“ืœืขืจ ื–ื™ื™ ืื•ื™ืš ืœื™ื™ื’ืŸ ืึธื•ื•ื•ืขืจื›ืขื“. ื“ืึธืš, ื‘ื™ื™ื’ื™ืงื™ื™ึทื˜ ืงื•ืžื˜ ืฆื• ืึท ืคึผืจื™ื™ึทื–. ืึธื‘ืขืจ, ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ื™ PHP ื™ื‘ืขืจื–ืขืฆืขืจ ื•ื•ื™ื™ื–ื˜ ื’ื•ื˜ ืคืึธืจืฉื˜ืขืœื•ื ื’, ื›ืึธื˜ืฉ ืขืก ืื™ื– ืึท ื—ื™ืœื•ืง, ืขืก ืื™ื– ื ื™ืฉื˜ื™ืง ืื•ืŸ, ื˜ืึธืžืขืจ, ื•ื•ืขื˜ ื–ื™ื™ืŸ ืืคื™ืœื• ื•ื•ื™ื™ื ื™ืงืขืจ ื•ื•ืขืŸ ืื™ืจ ื ื•ืฆืŸ ืคึผืจืขืœืึธืึทื“ื™ื ื’ ืื™ืŸ PHP 7.4, ื ื™ื˜ ืฆื• ื“ืขืจืžืึธื ืขืŸ JIT ืื™ืŸ PHP 8.

ืœืืžื™ืจ ื•ื•ื™ื™ื˜ืขืจ ื’ื™ื™ืŸ. Tarantool 2.0 ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ SQL. ืœืึธืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ืกืขืœืขืงื˜, ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ, ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืื•ืŸ ื•ื™ืกืžืขืงืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื ื™ืฆืŸ ื“ื™ SQL ืคึผืจืึธื˜ืึธืงืึธืœ ืื•ืŸ ืคืึทืจื’ืœื™ื™ึทื›ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืžื™ื˜ ื“ื™ noSQL (ื‘ื™ื™ื ืขืจื™) ื™ืงื•ื•ื™ื•ื•ืึทืœืึทื ืฅ:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ื“ื™ SQL ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืขืจ ื™ืžืคึผืจืขืกื™ื•ื• (ืœืึธื–ืŸ ืžื™ืจ ื“ืขืจืžืึธื ืขืŸ ืื™ืจ ืึทื– ืžื™ืจ ื–ืขื ืขืŸ ื ืึธืš ื˜ืขืกื˜ื™ื ื’ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืžืึธื“ืข). ืึธื‘ืขืจ, ืื™ืš ื•ื•ืึธืœื˜ ื ื™ืฉื˜ ื‘ืึทืงื•ืžืขืŸ ื™ื‘ืขืจืงืขืจืŸ ื•ื•ืขื’ืŸ ื“ืขื ืคืจื™ืขืจ; SQL ืฉื˜ื™ืฆืŸ ืื™ื– ื ืึธืš ืื•ื ื˜ืขืจ ืึทืงื˜ื™ื•ื• ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ (ืœืขืคื™ืขืจืขืš ืœืขืฆื˜ื ืก, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืฉื˜ื™ืฆืŸ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืกื˜ื™ื™ื˜ืžืึทื ืฅ) ืื•ืŸ ืื•ื™ื‘ ืžืฉืคื˜ืŸ ืœื•ื™ื˜ ื“ืขืจ ืจืฉื™ืžื” ื™ืฉื•ื–, ื“ื™ SQL ืžืึธื˜ืึธืจ ื•ื•ืขื˜ ืึทื ื“ืขืจื’ืึธื• ืึท ื ื•ืžืขืจ ืคื•ืŸ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทื ื– ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜.

ืึทืกื™ื ืง

ื ื•, ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ื–ืขืŸ ื•ื•ื™ ื“ื™ Async ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืงืขื ืขืŸ ื”ืขืœืคึฟืŸ ืื•ื ื“ื– ืคึฟืึทืจื‘ืขืกืขืจืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืื•ื™ื‘ืŸ. ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืžื’ื™ืœื”, ื“ื™ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ื’ื™ื˜ ืึทืŸ ืึทืคึผื™ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืงืึธืจืึธื•ื˜ื™ื ืขืก, ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ. ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ืขืžืคึผื™ืจื™ืงืœื™ ืึทื– ื“ื™ ืึธืคึผื˜ื™ืžืึทืœ ื ื•ืžืขืจ ืคื•ืŸ ืงืึธืจืึธื•ื˜ื™ื ื– ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืกื•ื•ื™ื•ื•ืข ืื™ื– 25:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
"ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ" 10,000 ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืื™ื‘ืขืจ 25 ืงืึธืจืึทื•ื˜ื™ื ืขืก ืื•ืŸ ื–ืขืŸ ื•ื•ืึธืก ื›ืึทืคึผืึทื ื–:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืคึผืขืจ ืกืขืงื•ื ื“ืข ื’ืขื•ื•ืืงืกืŸ ืžื™ื˜ ืžืขืจ ื•ื•ื™ 3 ืžืืœ ืคึฟืึทืจ tarantool-php/client!

ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ื“ื™ PECL ืงืึทื ืขืงื˜ืขืจ ื”ืื˜ ื ื™ืฉื˜ ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ืขืงืกื˜-ืึทืกื™ื ืง.

ื•ื•ืึธืก ื•ื•ืขื’ืŸ SQL?

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ืื™ืŸ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืžืึธื“ืข ื“ื™ ื—ื™ืœื•ืง ืฆื•ื•ื™ืฉืŸ ื“ื™ ื‘ื™ื™ื ืขืจื™ ืคึผืจืึธื˜ืึธืงืึธืœ ืื•ืŸ ืกืงืœ ืื™ื– ื’ืขื•ื•ืืจืŸ ื™ืŸ ื“ืขืจ ื’ืจืขื ืขืฅ ืคื•ืŸ ื˜ืขื•ืช.

ืกื•ื•ืึธืœ

ื•ื•ื™ื“ืขืจ ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืึธืคึผื˜ื™ืžืึทืœ ื ื•ืžืขืจ ืคื•ืŸ ืงืึธืจืึธื•ื˜ื™ื ื–, ื“ืึธืก ืžืึธืœ ืคึฟืึทืจ Swoole:
ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ืœืืžื™ืจ ื–ื™ืš ืืคืฉื˜ืขืœืŸ ื‘ื™ื™ 25. ืœืืžื™ืจ ืื™ื‘ืขืจื—ื–ืจืŸ ื“ืขื ื–ืขืœื‘ืŸ ืงื•ื ืฅ ื•ื•ื™ ืžื™ื˜ ื“ื™ ืืกื™ื ืง ืคืืจืœืขื ื’ืขืจื•ื ื’ - ืคืืจืฉืคืจื™ื™ื˜ืŸ 10,000 ืืคืขืจืืฆื™ืขืก ืฆื•ื•ื™ืฉืŸ 25 ืงืืจืื˜ื™ื ืขืก. ืื™ืŸ ื“ืขืจืฆื•, ืžื™ืจ ื•ื•ืขืœืŸ ืœื™ื™ื’ืŸ ืืŸ ืื ื“ืขืจ ืคึผืจืึธื‘ืข ืื™ืŸ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื˜ื™ื™ืœืŸ ืึทืœืข ื“ื™ ืึทืจื‘ืขื˜ ืื™ืŸ 2 ืฆื•ื•ื™ื™ ืคึผืจืึทืกืขืกืึทื– (ื“ืึธืก ืื™ื–, ื™ืขื“ืขืจ ืคึผืจืึธืฆืขืก ื•ื•ืขื˜ ื“ื•ืจื›ืคื™ืจืŸ 5,000 ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืื™ืŸ 25 ืงืึธืจืึทื•ื˜ื™ื ืขืก). ืคึผืจืึทืกืขืกืึทื– ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืืฉืืคืŸ ื ื™ืฆืŸ SwooleProcess.

ืจืขื–ื•ืœื˜ืึทื˜ืŸ:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ืกื•ื•ืึธืœืข ื•ื•ื™ื™ื–ื˜ ืึท ื‘ื™ืกืœ ื ื™ื“ืขืจื™ืงืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืงืึทืžืคึผืขืจื“ ืžื™ื˜ ืึทืกื™ื ืง ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืื™ื™ืŸ ืคึผืจืึธืฆืขืก, ืึธื‘ืขืจ ืžื™ื˜ 2 ืคึผืจืึทืกืขืกืึทื– ื“ื™ ื‘ื™ืœื“ ืขื ื“ืขืจื•ื ื’ืขืŸ ื“ืจืึทืžืึทื˜ื™ืงืœื™ (ื“ื™ ื ื•ืžืขืจ 2 ืื™ื– ื ื™ืฉื˜ ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ื“ื•ืจืš ืฆื•ืคืึทืœ; ืื•ื™ืฃ ืžื™ื™ืŸ ืžืึทืฉื™ืŸ, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ 2 ืคึผืจืึทืกืขืกืึทื– ื•ื•ืึธืก ื’ืขื•ื•ื™ื–ืŸ ื“ืขืจ ื‘ืขืกื˜ืขืจ ืจืขื–ื•ืœื˜ืึทื˜).

ื“ื•ืจืš ื“ืขื ื•ื•ืขื’, ื“ื™ Async ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืื•ื™ืš ื”ืื˜ ืึท API ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืคึผืจืึทืกืขืกืึทื–, ืึธื‘ืขืจ ื“ืึธืจื˜ ืื™ืš ื”ืื˜ ื ื™ืฉื˜ ื‘ืึทืžืขืจืงืŸ ืงื™ื™ืŸ ื—ื™ืœื•ืง ืคื•ืŸ ืคืœื™ืกื ื“ื™ืง ื‘ืขื ื˜ืฉืžืึทืจืงืก ืื™ืŸ ืื™ื™ืŸ ืึธื“ืขืจ ืžืขืจ ืคึผืจืึทืกืขืกืึทื– (ืขืก ืื™ื– ืžืขื’ืœืขืš ืึทื– ืื™ืš ืžืขืกื˜ ื–ื™ืš ืขืจื’ืขืฅ).

SQL ื•ื•ืก ื‘ื™ื™ื ืขืจื™ ืคึผืจืึธื˜ืึธืงืึธืœ:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ื•ื•ื™ ืžื™ื˜ ืึทืกื™ื ืง, ื“ื™ ื—ื™ืœื•ืง ืฆื•ื•ื™ืฉืŸ ื‘ื™ื™ื ืขืจื™ ืื•ืŸ ืกืงืœ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืื™ื– ื™ืœื™ืžืึทื ื™ื™ื˜ืึทื“ ืื™ืŸ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืžืึธื“ืข.

ืคึผืึทืจืึทืœืขืœ

ื–ื™ื ื˜ ื“ื™ ืคึผืึทืจืึทืœืขืœ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืื™ื– ื ื™ืฉื˜ ื•ื•ืขื’ืŸ ืงืึธืจืึธื•ื˜ื™ื ืขืก, ืึธื‘ืขืจ ื•ื•ืขื’ืŸ ืคึฟืขื“ืขื, ืœืึธืžื™ืจ ืžืขืกื˜ืŸ ื“ื™ ืึธืคึผื˜ื™ืžืึทืœ ื ื•ืžืขืจ ืคื•ืŸ ืคึผืึทืจืึทืœืขืœ ืคึฟืขื“ืขื:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ืขืก ืื™ื– 16 ืื•ื™ืฃ ืžื™ื™ืŸ ืžืึทืฉื™ืŸ. ืœืึธืžื™ืจ ืœื•ื™ืคืŸ ืงืึทื ืขืงื˜ืขืจ ื‘ืขื ื˜ืฉืžืึทืจืงืก ืื•ื™ืฃ 16 ืคึผืึทืจืึทืœืขืœ ืคึฟืขื“ืขื:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ืืคื™ืœื• ื‘ืขืกืขืจ ื•ื•ื™ ืžื™ื˜ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ื™ืงืกื˜ืขื ืฉืึทื ื– (ื ื™ื˜ ืงืึทื•ื ื˜ื™ื ื’ Swoole ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ 2 ืคึผืจืึทืกืขืกืึทื–). ื‘ืึทืžืขืจืงื•ื ื’ ืึทื– ืคึฟืึทืจ ื“ื™ PECL ืงืึทื ืขืงื˜ืขืจ, ื“ื™ ืึทืคึผื“ื™ื™ื˜ ืื•ืŸ ื•ืคึผืกืขืจื˜ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ืœื™ื™ื“ื™ืง. ื“ืึธืก ืื™ื– ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ื“ื™ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืžื™ื˜ ืึท ื˜ืขื•ืช - ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ืื•ื™ื‘ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ืฉื•ืœื“ ืคื•ืŸ ืขืงืกื˜-ืคึผืึทืจืึทืœืขืœ, ืขืงืกื˜-ื˜ืึทืจืึทื ื˜ืึธืึธืœ ืึธื“ืขืจ ื‘ื™ื™ื“ืข.

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืคืึทืจื’ืœื™ื™ึทื›ืŸ SQL ืคืึธืจืฉื˜ืขืœื•ื ื’:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel
ื‘ืึทืžืขืจืงืŸ ื“ื™ ืขื ืœืขื›ืงื™ื™ื˜ ืžื™ื˜ ื“ื™ ื’ืจืึทืคื™ืง ืคึฟืึทืจ ืงืึทื ืขืงื˜ืขืจื– ืคืœื™ืกื ื“ื™ืง ืกื™ื ื˜ืฉืจืึธื ืึธื•ืกืœื™?

ืฆื•ื–ืึทืžืขืŸ

ืื•ืŸ ืœืขืกืึธืฃ, ืœืึธื–ืŸ ืก ืกืึทืžืขืจื™ื™ื– ืึทืœืข ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืื™ืŸ ืื™ื™ืŸ ื’ืจืึทืคื™ืง ืฆื• ื–ืขืŸ ื“ื™ ืงื•ื™ืœืขืœื“ื™ืง ื‘ื™ืœื“ ืคึฟืึทืจ ื“ื™ ื˜ืขืกื˜ืขื“ ื™ืงืกื˜ืขื ืฉืึทื ื–. ืœืึธืžื™ืจ ืฆื•ื’ืขื‘ืŸ ื‘ืœื•ื™ื– ืื™ื™ืŸ ื ื™ื™ึทืข ืคึผืจืึธื‘ืข ืฆื• ื“ื™ ื˜ืฉืึทืจื˜, ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ื ืึธืš ื ื™ืฉื˜ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ - ืœืึธืžื™ืจ ืœื•ื™ืคืŸ ืึทืกื™ื ืง ืงืึธืจืึธื•ื˜ื™ื ื– ืคึผืึทืจืึทืœืขืœ ืžื™ื˜ ืคึผืึทืจืึทืœืขืœ *. ื“ืขืจ ื’ืขื“ืึทื ืง ืคื•ืŸ ื™ื ื˜ืึทื’ืจื™ื™ื˜ื™ื ื’ ื“ื™ ืื•ื™ื‘ืŸ ื™ืงืกื˜ืขื ืฉืึทื ื– ืื™ื– ืฉื•ื™ืŸ ืื™ื– ื“ื™ืกืงืึทืกื˜ ืžื—ื‘ืจื™ื, ืึธื‘ืขืจ ืงื™ื™ืŸ ืงืึธื ืกืขื ืกื•ืก ืื™ื– ืจื™ื˜ืฉื˜, ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ื˜ืึธืŸ ื“ืึธืก ื–ื™ืš.

* ืขืก ืื™ื– ื ื™ื˜ ืžืขื’ืœืขืš ืฆื• ืงืึทื˜ืขืจ Swoole ืงืึธืจืึธื•ื˜ื™ื ืขืก ืžื™ื˜ ืคึผืึทืจืึทืœืขืœ; ืขืก ืžื™ื™ื ื˜ ืึทื– ื“ื™ ื™ืงืกื˜ืขื ืฉืึทื ื– ื–ืขื ืขืŸ ื™ื ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ.

ืึทื–ื•ื™, ื“ื™ ืœืขืฆื˜ ืจืขื–ื•ืœื˜ืึทื˜ืŸ:

ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ PHP ืงืึทื ืขืงื˜ืขืจื– ืคึฟืึทืจ Tarantool ืžื™ื˜ Async, Swoole ืื•ืŸ Parallel

ืึธื ืฉื˜ืึธื˜ ืึท ืžืกืงื ื

ืื™ืŸ ืžื™ื™ืŸ ืžื™ื™ื ื•ื ื’, ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ื’ืึทื ืฅ ื•ื•ืขืจื˜, ืื•ืŸ ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืกื™ื‘ื” ืื™ืš ื‘ื™ืŸ ื–ื™ื›ืขืจ ืึทื– ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื“ืขืจ ืฉื™ืขื•ืจ! ืฆื™ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืฉืœื™ืกืŸ ื“ืขื ืื™ืŸ ืึท ืคืึทืงื˜ื™ืฉ ืคึผืจื•ื™ืขืงื˜ ื‘ืœื•ื™ื– ืคึฟืึทืจ ื–ื™ืš, ืื™ืš ื•ื•ืขืœ ื ืึธืจ ื–ืึธื’ืŸ ืึทื– ืคึฟืึทืจ ืžื™ืจ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื˜ืฉื™ืงืึทื•ื•ืข ืขืงืกืคึผืขืจื™ืžืขื ื˜ ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืึธืคึผืฉืึทืฆืŸ ื•ื•ื™ ืคื™ืœ ืื™ืจ ืงืขื ืขืŸ "ืงื•ื•ืขื˜ืฉืŸ" ืื•ื™ืก ืคื•ืŸ ืึท ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ื˜ืงืคึผ ืงืึทื ืขืงื˜ืขืจ ืžื™ื˜ ืžื™ื ื™ืžืึทืœ ืžื™. ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜ ื™ื™ื“ื™ืึทื– ืคึฟืึทืจ ื™ืžืคึผืจื•ื•ื•ื™ื ื’ ื‘ืขื ื˜ืฉืžืึทืจืงืก, ืื™ืš ื•ื•ืขืœ ื–ื™ื™ืŸ ืฆื•ืคืจื™ื“ืŸ ืฆื• ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื“ื™ื™ืŸ ืฆื™ืขืŸ ื‘ืขื˜ืŸ. ื›ืœ ืงืึธื“ ืžื™ื˜ ืงืึทื˜ืขืจ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื•ืŸ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืื™ื– ืืจื•ื™ืก ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื–.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’