Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚

PHP เช‡เช•เซ‹เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชนเชพเชฒเชฎเชพเช‚ เชŸเซ‡เชฐเซ‡เชจเซเชŸเซ‚เชฒ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡ เช•เชจเซ‡เช•เซเชŸเชฐเซเชธ เช›เซ‡ - เช† เชธเชคเซเชคเชพเชตเชพเชฐ PECL เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เช›เซ‡ tarantool/tarantool-php, C เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡, เช…เชจเซ‡ tarantool-php/client, PHP เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ. เชนเซเช‚ เชชเช›เซ€เชจเซ‹ เชฒเซ‡เช–เช• เช›เซเช‚.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เชนเซเช‚ เชฌเช‚เชจเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเชฐเซ€เช•เซเชทเชฃเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช…เชจเซ‡ เชฌเชคเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช•เซ‡ เช•เซ‹เชกเชฎเชพเช‚ เชจเซเชฏเซ‚เชจเชคเชฎ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชฅเซ‡, เชคเชฎเซ‡ 3-5 เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชงเชพเชฐเซ‹ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ (เช•เซƒเชคเซเชฐเชฟเชฎ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชชเชฐ!).

เช†เชชเชฃเซ‡ เชถเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€เชถเซเช‚?

เช…เชฎเซ‡ เช‰เชชเชฐ เชœเชฃเชพเชตเซ‡เชฒเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เช•เชฐเซ€เชถเซเช‚ เชธเชฟเช‚เช•เซเชฐเชจเชธ เช•เชจเซ‡เช•เซเชŸเชฐเซเชธ เช…เชธเซเชฎเซ‡เชณ เชฐเซ€เชคเซ‡, เชธเชฎเชพเช‚เชคเชฐเชฎเชพเช‚ เช…เชจเซ‡ เช…เชธเซเชฎเซ‡เชณ-เชธเชฎเชพเช‚เชคเชฐ เชฐเซ€เชคเซ‡ เชšเชพเชฒเซ‡ เช›เซ‡. ๐Ÿ™‚ เช…เชฎเซ‡ เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเชพ เช•เซ‹เชกเชจเซ‡ เชชเชฃ เชธเซเชชเชฐเซเชถ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจเชฅเซ€. เชคเชฎเชจเซ‡ เชœเซ‡ เชœเซ‹เชˆเช เช›เซ‡ เชคเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชนเชพเชฒเชฎเชพเช‚ เช˜เชฃเชพ เชเช•เซเชธเชŸเซ‡เชจเซเชถเชจเซเชธ เช‰เชชเชฒเชฌเซเชง เช›เซ‡:

  • เชธเซเชตเซ‚เชฒเซ‡ - PHP เชฎเชพเชŸเซ‡ เช‰เชšเซเชš-เชชเซเชฐเชฆเชฐเซเชถเชจ เช…เชธเซเชฎเซ‡เชณ เชฎเชพเชณเช–เซเช‚. เช…เชฒเซ€เชฌเชพเชฌเชพ เช…เชจเซ‡ เชฌเชพเชฏเชกเซ เชœเซ‡เชตเชพ เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชœเชพเชฏเชจเซเชŸเซเชธ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡. เช†เชตเซƒเชคเซเชคเชฟ 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 เชฅเซเชฐเซ‡เชก เชธเซ‡เชซ) เชธเช‚เชธเซเช•เชฐเชฃ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เช…เชฎเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€เชถเซเช‚?

เชšเชพเชฒเซ‹ เชฒเช–เชตเชพ-เช†เช—เชณ เชฒเซ‰เช—เชฟเช‚เช— เช…เช•เซเชทเชฎ เชธเชพเชฅเซ‡ เชŸเซ‡เชฐเซ‡เชจเซเชŸเซ‚เชฒ เชฆเชพเช–เชฒเซ‹ เชถเชฐเซ‚ เช•เชฐเซ€เช (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>"}

เชฐเซ‡เชจเซเชกเชฎ เช•เซ€ เชฎเซ‚เชฒเซเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชŸเซเชฏเซเชชเชฒเซเชธเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช• เชชเซ‹เชคเซ‡ เชธเชฐเซเชตเชฐเชจเซ‡ เชเช• เชœ เชตเชฟเชจเช‚เชคเซ€ เช›เซ‡, เชœเซ‡ 10,000 เชตเช–เชค เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ (เชฐเชฟเชตเซ‹เชฒเซเชฏเซเชถเชจเซเชธ), เชœเซ‡ เชฌเชฆเชฒเชพเชฎเชพเช‚, เชชเซเชจเชฐเชพเชตเซƒเชคเซเชคเชฟเช“เชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ 5 เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเซ‹ เชตเชšเซเชšเซ‡เชจเชพ เชคเชฎเชพเชฎ เชธเชฎเชฏเชจเชพ เชตเชฟเชšเชฒเชจเซ‹ 3%* เชจเซ€ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เชญเซ‚เชฒเชจเซ€ เช…เช‚เชฆเชฐ เชจ เชนเซ‹เชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเซ‹เชจเซเช‚ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เชฅเชพเชฏ เช›เซ‡. เช† เชชเช›เซ€, เชธเชฐเซ‡เชฐเชพเชถ เชชเชฐเชฟเชฃเชพเชฎ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเซ‡ เชฅเซเชฐเซ‹เชŸเชฒเชฟเช‚เช—เชฅเซ€ เชฐเซ‹เช•เชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเซ‹ เชตเชšเซเชšเซ‡ 1 เชธเซ‡เช•เชจเซเชกเชจเซ‹ เชตเชฟเชฐเชพเชฎ เช›เซ‡. เชฒเซเช†เชจเชพ เช—เชพเชฐเซเชฌเซ‡เชœ เช•เชฒเซ‡เช•เซเชŸเชฐเชจเซ‡ เชฆเชฐเซ‡เช• เชชเซเชจเชฐเชพเชตเซƒเชคเซเชคเชฟ เชชเชนเซ‡เชฒเชพเช‚ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชชเซ‚เชฐเซเชฃ เชฅเชฏเชพ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชซเชฐเชœ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. PHP เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชซเช•เซเชค เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช• เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชธเชพเชฅเซ‡ เชœ เชถเชฐเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เช†เช‰เชŸเชชเซเชŸ เชฌเชซเชฐเชฟเช‚เช— เชธเช•เซเชทเชฎ เชนเซ‹เชฏ เช›เซ‡ เช…เชจเซ‡ เช•เชšเชฐเซ‹ เชเช•เชคเซเชฐ เช•เชฐเชจเชพเชฐ เช…เช•เซเชทเชฎ เชนเซ‹เชฏ เช›เซ‡.

* เช•เซเชฐเชพเช‚เชคเชฟเชจเซ€ เชธเช‚เช–เซเชฏเชพ, เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเซ‹ เช…เชจเซ‡ เชญเซ‚เชฒ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช• เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚ เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชชเชฐเซ€เช•เซเชทเชฃ เชตเชพเชคเชพเชตเชฐเชฃ

เชจเซ€เชšเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เชชเชฐเชฟเชฃเชพเชฎเซ‹ MacBookPro (2015), เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ - Fedora 30 (kernel version 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/client: 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-เชธเชฎเชพเช‚เชคเชฐ: 1.1.3

* เช•เชฎเชจเชธเซ€เชฌเซ‡, เชธเชคเซเชคเชพเชตเชพเชฐ เช•เชจเซ‡เช•เซเชŸเชฐ PHP เชตเชฐเซเชเชจ > 7.2 เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. PHP 7.3 เชชเชฐ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชฎเชพเชฐเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชชเซ‡เชš.

เชฐเชฟเชเชฒเซเชŸ

เชธเชฟเช‚เช•เซเชฐเชจเชธ เชฎเซ‹เชก

เชŸเซ‡เชฐเซ‡เชจเซเชŸเซ‚เชฒ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชฌเชพเชˆเชจเชฐเซ€ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชฎเซ‡เชธเซ‡เชœเชชเซ‡เช• เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‡ เชถเซเชฐเซ‡เชฃเซ€เชฌเชฆเซเชง เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. PECL เช•เชจเซ‡เช•เซเชŸเชฐเชฎเชพเช‚, เชธเซ€เชฐเซ€เชฏเชฒเชพเช‡เชเซ‡เชถเชจ เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ€ เชŠเช‚เชกเชพเชˆเชฎเชพเช‚ เช›เซเชชเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชฏเซเชเชฐเชฒเซ‡เชจเซเชก เช•เซ‹เชกเชฎเชพเช‚เชฅเซ€ เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡. เชถเช•เซเชฏ เชœเชฃเชพเชคเซเช‚ เชจเชฅเซ€. เชเช• เชถเซเชฆเซเชง PHP เช•เชจเซ‡เช•เซเชŸเชฐ, เชคเซ‡เชจเชพเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชเชจเซเช•เซ‹เชกเชฐเชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซ€เชจเซ‡ เช…เชฅเชตเชพ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เช•เชธเซเชŸเชฎเชพเช‡เช เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชฌเซ‡ เชเชจเซเช•เซ‹เชกเชฐเซเชธ เช‰เชชเชฒเชฌเซเชง เช›เซ‡, เชเช• เชคเซ‡เชจเชพ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ msgpack/msgpack-php (เชธเชคเซเชคเชพเชตเชพเชฐ MessagePack PECL เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ), เชฌเซ€เชœเซเช‚ เชšเชพเชฒเซ เช›เซ‡ rybakit/msgpack (เชถเซเชฆเซเชง PHP เชฎเชพเช‚).

เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ, เช…เชฎเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐ เชฎเชพเชŸเซ‡ MessagePack เชเชจเซเช•เซ‹เชกเชฐเซเชธเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ‡ เชฎเชพเชชเซ€เชถเซเช‚ เช…เชจเซ‡ เช†เช—เชณเชจเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹เชฎเชพเช‚ เช…เชฎเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชชเชฐเชฟเชฃเชพเชฎ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚:

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚
เชœเซ‹เช•เซ‡ PHP เชตเชฐเซเชเชจ (เชถเซเชฆเซเชง) เชเชกเชชเชฎเชพเช‚ PECL เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เช•เชฐเชคเชพเช‚ เชนเชฒเช•เซ€ เช—เซเชฃเชตเชคเซเชคเชพเชตเชพเชณเชพ เช›เซ‡, เชตเชพเชธเซเชคเชตเชฟเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚ เชนเซเช‚ เชนเชœเซ€ เชชเชฃ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซ€เชถ rybakit/msgpack, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชงเชฟเช•เซƒเชค MessagePack เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชฎเชพเช‚ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃ เชฎเชพเชคเซเชฐ เช†เช‚เชถเชฟเช• เชฐเซ€เชคเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เชธเซเชŸเชฎ เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชธเชฎเชฐเซเชฅเชจ เชจเชฅเซ€, เชœเซ‡เชจเชพ เชตเชฟเชจเชพ เชคเชฎเซ‡ เชกเซ‡เชธเชฟเชฎเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชถเซ‹ เชจเชนเซ€เช‚ - เชŸเซ‡เชฐเซ‡เชจเซเชŸเซ‚เชฒ 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 เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เช…เชฎเชจเซ‡ เช‰เชชเชฐเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเซ‡ เชธเซเชงเชพเชฐเชตเชพเชฎเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเชฆเชฆ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เชธเซเชฎเซ‡เชณ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡, เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เช•เซ‹เชฐเซ‹เชŸเซ€เชจเซเชธ เชชเชฐ เช†เชงเชพเชฐเชฟเชค API เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚. เช…เชฎเซ‡ เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• เชฐเซ€เชคเซ‡ เชถเซ‹เชงเซ€ เช•เชพเชขเซ€เช เช›เซ€เช เช•เซ‡ เช†เชชเชฃเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฎเชพเชŸเซ‡ เช•เซ‹เชฐเซ‹เชŸเซ€เชจเชจเซ€ เชถเซเชฐเซ‡เชทเซเช  เชธเช‚เช–เซเชฏเชพ 25 เช›เซ‡:

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚
10,000 เช•เซ‹เชฐเซ‹เชŸเชฟเชจเซเชธเชฎเชพเช‚ 25 เช‘เชชเชฐเซ‡เชถเชจเซเชธ โ€œเชซเซ‡เชฒเชพเชตเซ‹โ€ เช…เชจเซ‡ เชœเซเช“ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡:

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚
เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ€ เชธเช‚เช–เซเชฏเชพ 3 เช—เชฃเชพเชฅเซ€ เชตเชงเซ เชตเชงเซ€ เช›เซ‡ tarantool-php/client!

เชฆเซเชฐเซเชญเชพเช—เซเชฏเซ‡, PECL เช•เชจเซ‡เช•เซเชŸเชฐ ext-async เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เชฅเชฏเซเช‚ เชจเชฅเซ€.

SQL เชตเชฟเชถเซ‡ เชถเซเช‚?

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚
เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เช…เชธเซเชฎเซ‡เชณ เชฎเซ‹เชกเชฎเชพเช‚ เชฌเชพเชˆเชจเชฐเซ€ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช…เชจเซ‡ เชเชธเช•เซเชฏเซเชเชฒ เชตเชšเซเชšเซ‡เชจเซ‹ เชคเชซเชพเชตเชค เชญเซ‚เชฒเชจเชพ เชฎเชพเชฐเซเชœเชฟเชจเชฎเชพเช‚ เชฌเชจเซ€ เช—เชฏเซ‹ เช›เซ‡.

เชธเซเชตเซ‚เชฒเซ‡

เชซเชฐเซ€เชฅเซ€ เช…เชฎเซ‡ เช•เซ‹เชฐเซ‹เชŸเซ€เชจเชจเซ€ เชถเซเชฐเซ‡เชทเซเช  เชธเช‚เช–เซเชฏเชพ เชถเซ‹เชงเซ€เช เช›เซ€เช, เช† เชตเช–เชคเซ‡ เชธเซเชตเซ‚เชฒ เชฎเชพเชŸเซ‡:
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 เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชชเชพเชธเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ API เชชเชฃ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซเชฏเชพเช‚ เชฎเชจเซ‡ เชเช• เช…เชฅเชตเชพ เชตเชงเซ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชฎเชพเช‚ เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช• เชšเชฒเชพเชตเชตเชพเชฅเซ€ เช•เซ‹เชˆ เชคเชซเชพเชตเชค เชœเซ‹เชตเชพ เชฎเชณเซเชฏเซ‹ เชจเชฅเซ€ (เช เชถเช•เซเชฏ เช›เซ‡ เช•เซ‡ เชฎเซ‡เช‚ เช•เซเชฏเชพเช‚เช• เช—เชกเชฌเชก เช•เชฐเซ€ เชนเซ‹เชฏ).

เชเชธเช•เซเชฏเซเชเชฒ เชตเชฟ เชฌเชพเชˆเชจเชฐเซ€ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ:

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚
Async เชจเซ€ เชœเซ‡เชฎ, เชฌเชพเชˆเชจเชฐเซ€ เช…เชจเซ‡ SQL เช‘เชชเชฐเซ‡เชถเชจเซเชธ เชตเชšเซเชšเซ‡เชจเซ‹ เชคเชซเชพเชตเชค เช…เชธเซเชฎเซ‡เชณ เชฎเซ‹เชกเชฎเชพเช‚ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชธเชฎเชพเช‚เชคเชฐ

เช•เชพเชฐเชฃ เช•เซ‡ เชธเชฎเชพเช‚เชคเชฐ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เช•เซ‹เชฐเซ‹เชŸเซ€เชจ เชตเชฟเชถเซ‡ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฅเซเชฐเซ‡เชกเซ‹ เชตเชฟเชถเซ‡ เช›เซ‡, เชšเชพเชฒเซ‹ เชธเชฎเชพเช‚เชคเชฐ เชฅเซเชฐเซ‡เชกเซ‹เชจเซ€ เชถเซเชฐเซ‡เชทเซเช  เชธเช‚เช–เซเชฏเชพเชจเซ‡ เชฎเชพเชชเซ€เช:

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚
เชคเซ‡ เชฎเชพเชฐเชพ เชฎเชถเซ€เชจ เชชเชฐ 16 เช›เซ‡. เชšเชพเชฒเซ‹ 16 เชธเชฎเชพเช‚เชคเชฐ เชฅเซเชฐเซ‡เชกเซ‹ เชชเชฐ เช•เชจเซ‡เช•เซเชŸเชฐ เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช• เชšเชฒเชพเชตเซ€เช:

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚
เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเชฟเชฃเชพเชฎ เช…เชธเซเชฎเซ‡เชณ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เช•เชฐเชคเชพเช‚ เชชเชฃ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡ (2 เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชชเชฐ เชšเชพเชฒเชคเชพ Swooleเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชคเชพ เชจเชฅเซ€). เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ PECL เช•เชจเซ‡เช•เซเชŸเชฐ เชฎเชพเชŸเซ‡, เช…เชชเชกเซ‡เชŸ เช…เชจเซ‡ เช…เชชเชธเชฐเซเชŸ เช“เชชเชฐเซ‡เชถเชจเซเชธ เช–เชพเชฒเซ€ เช›เซ‡. เช† เช เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช›เซ‡ เช•เซ‡ เช† เช‘เชชเชฐเซ‡เชถเชจเซเชธ เชญเซ‚เชฒ เชธเชพเชฅเซ‡ เชจเชฟเชทเซเชซเชณ เชฅเชฏเชพ เชนเชคเชพ - เชฎเชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€ เช•เซ‡ เชคเซ‡ ext-เชธเชฎเชพเช‚เชคเชฐ, ext-tarantool เช…เชฅเชตเชพ เชฌเช‚เชจเซ‡เชจเซ‹ เชฆเซ‹เชท เชนเชคเซ‹.

เชนเชตเซ‡ เชšเชพเชฒเซ‹ SQL เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ€เช:

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚
เชธเชฟเช‚เช•เซเชฐเชจเชธ เชฐเซ€เชคเซ‡ เชšเชพเชฒเชคเชพ เช•เชจเซ‡เช•เซเชŸเชฐเซเชธ เชฎเชพเชŸเซ‡เชจเชพ เช—เซเชฐเชพเชซ เชธเชพเชฅเซ‡ เชธเชฎเชพเชจเชคเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ‹?

เชเช•เชธเชพเชฅเซ‡

เช…เชจเซ‡ เช…เช‚เชคเซ‡, เชšเชพเชฒเซ‹ เชเช• เช—เซเชฐเชพเชซเชฎเชพเช‚ เชฌเชงเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเซ‹ เชธเชพเชฐเชพเช‚เชถ เช†เชชเซ€เช เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ‡เชฒ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฎเชพเชŸเซ‡ เชเช•เช‚เชฆเชฐ เชšเชฟเชคเซเชฐ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡. เชšเชพเชฒเซ‹ เชšเชพเชฐเซเชŸเชฎเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เชจเชตเซ€ เช•เชธเซ‹เชŸเซ€ เช‰เชฎเซ‡เชฐเซ€เช, เชœเซ‡ เช†เชชเชฃเซ‡ เชนเชœเซ เชธเซเชงเซ€ เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€ - เชšเชพเชฒเซ‹ Async เช•เซ‹เชฐเซ‹เชŸเซ€เชจเซเชธเชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ* เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชšเชฒเชพเชตเซ€เช. เช‰เชชเชฐเซ‹เช•เซเชค เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช›เซ‡ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เชฒเซ‡เช–เช•เซ‹, เชชเชฐเช‚เชคเซ เช•เซ‹เชˆ เชธเชฐเซเชตเชธเช‚เชฎเชคเชฟ เชชเชนเซ‹เช‚เชšเซ€ เชจ เชนเชคเซ€, เชคเชฎเชพเชฐเซ‡ เชคเซ‡ เชœเชพเชคเซ‡ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡.

* เชธเชฎเชพเช‚เชคเชฐ เชธเชพเชฅเซ‡ Swoole coroutines เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชจ เชนเชคเซเช‚ เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช† เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธ เช…เชธเช‚เช—เชค เช›เซ‡.

เชคเซ‡เชฅเซ€, เช…เช‚เชคเชฟเชฎ เชชเชฐเชฟเชฃเชพเชฎเซ‹:

Async, Swoole เช…เชจเซ‡ Parallel เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Tarantool เชฎเชพเชŸเซ‡ PHP เช•เชจเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเซเช‚

เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ เชเช• เชจเชฟเชทเซเช•เชฐเซเชท

เชฎเชพเชฐเชพ เชฎเชคเซ‡, เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชคเชฆเซเชฆเชจ เชฏเซ‹เช—เซเชฏ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เช•เชพเชฐเชฃเซ‹เชธเชฐ เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เช›เซ‡ เช•เซ‡ เช† เชฎเชฐเซเชฏเชพเชฆเชพ เชจเชฅเซ€! เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เช† เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ, เชนเซเช‚ เชซเช•เซเชค เชเชŸเชฒเซเช‚ เชœ เช•เชนเซ€เชถ เช•เซ‡ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ เชเช• เชฐเชธเชชเซเชฐเชฆ เชชเซเชฐเชฏเซ‹เช— เชนเชคเซ‹ เชœเซ‡ เชคเชฎเชจเซ‡ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชธเชพเชฅเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชธ TCP เช•เชจเซ‡เช•เซเชŸเชฐเชฎเชพเช‚เชฅเซ€ เช•เซ‡เชŸเชฒเซเช‚ "เชธเซเช•เซเชตเชฟเช" เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฌเซ‡เชจเซเชšเชฎเชพเชฐเซเช• เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชตเชฟเชšเชพเชฐเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเชพเชฐเซ€ เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ เชตเชฟเชšเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชจเซ‡ เช†เชจเช‚เชฆ เชฅเชถเซ‡. เชฒเซ‹เช‚เชš เชธเซ‚เชšเชจเชพเช“ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชธเชพเชฅเซ‡เชจเซ‹ เชคเชฎเชพเชฎ เช•เซ‹เชก เช…เชฒเช—เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เชญเช‚เชกเชพเชฐ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹