Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ‡āĻ•ā§‹āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻŸāĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻā§āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻāĻŸāĻŋ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ PECL āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ tarantool/tarantool-php, āĻ¸āĻŋ āĻ¤ā§‡ āĻ˛ā§‡āĻ–āĻž, āĻāĻŦāĻ‚ tarantool-php/client, āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ āĻ˛ā§‡āĻ–āĻžāĨ¤ āĻ†āĻŽāĻŋ āĻĒāĻ°ā§‡āĻ°āĻŸāĻŋāĻ° āĻ˛ā§‡āĻ–āĻ•āĨ¤

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡, āĻ†āĻŽāĻŋ āĻ‰āĻ­āĻ¯āĻŧ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻļā§‡āĻ¯āĻŧāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻāĻŦāĻ‚ āĻĻā§‡āĻ–āĻžāĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡, āĻ•ā§‹āĻĄā§‡ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡, āĻ†āĻĒāĻ¨āĻŋ 3-5 āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ (āĻ¸āĻŋāĻ¨ā§āĻĨā§‡āĻŸāĻŋāĻ• āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ¯āĻŧ!).

āĻ†āĻŽāĻ°āĻž āĻ•āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŦ?

āĻ†āĻŽāĻ°āĻž āĻ‰āĻĒāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛āĻŋāĻ–āĻŋāĻ¤āĻĻā§‡āĻ° āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŦ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻ¸āĻ‚āĻ¯ā§‹āĻœāĻ•āĻ—ā§āĻ˛āĻŋ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ­āĻžāĻŦā§‡, āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛āĻ­āĻžāĻŦā§‡ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸-āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ā§‡ āĻšāĻ˛āĻ›ā§‡āĨ¤ 🙂 āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ“ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ° āĻ•ā§‹āĻĄ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¨āĻžāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻž āĻšāĻžāĻ¨ āĻ¤āĻž āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

  • āĻ¸ā§āĻ˛ā§‡ - PHP-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ‰āĻšā§āĻš-āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ Alibaba āĻāĻŦāĻ‚ Baidu āĻāĻ° āĻŽāĻ¤ā§‹ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ¨ā§‡āĻŸ āĻœāĻžāĻ¯āĻŧāĻžāĻ¨ā§āĻŸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ā§ˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 4.1.0 āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻœāĻžāĻĻā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ SwooleRuntime::enableCoroutine(), āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ "āĻ•ā§‹āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ PHP āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡" āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧā§ˇ
  • Async āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ-āĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻ•āĻžāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ–ā§āĻŦ āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋāĻļā§€āĻ˛ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ›āĻŋāĻ˛āĨ¤ āĻ•ā§‡āĻ¨ āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤? āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ…āĻœāĻžāĻ¨āĻž āĻ•āĻžāĻ°āĻŖā§‡, āĻ˛ā§‡āĻ–āĻ• āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĻŸāĻŋ āĻŽā§āĻ›ā§‡ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ āĻ­āĻžāĻ—ā§āĻ¯ āĻ…āĻ¸ā§āĻĒāĻˇā§āĻŸāĨ¤ āĻ†āĻŽāĻŋ āĻāĻŸāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻāĻŸāĻž āĻĨā§‡āĻ•ā§‡ Swoole-āĻāĻ° āĻŽāĻ¤ā§‹, āĻāĻ‡ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻŸāĻŋ TCP āĻāĻŦāĻ‚ TLS āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻ•ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻŋ āĻ¸āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻ¤ā§‡ āĻ•āĻŦā§āĻœāĻŋāĻ° āĻāĻžāĻāĻ•ā§āĻ¨āĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¸āĻšāĻœā§‡āĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ¯āĻžāĻ¨ā§āĻŸ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ "async.tcp = 1"āĨ¤
  • āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ - phpdbg, apcu, pthreads, pcov, uopz-āĻāĻ° āĻŽāĻ¤ā§‹ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻ˛ā§‡āĻ–āĻ• āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻœā§‹ āĻ“āĻ¯āĻŧāĻžāĻŸāĻ•āĻŋāĻ¨āĻ¸ā§‡āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĨ¤ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻŸāĻŋ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ-āĻ¤ā§‡ āĻŽāĻžāĻ˛ā§āĻŸāĻŋāĻĨā§āĻ°ā§‡āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ API āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ pthreads-āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻšāĻ˛ āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° PHP-āĻāĻ° ZTS (Zend Thread Safe) āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŦ?

āĻ†āĻ¸ā§āĻ¨ āĻ˛āĻŋāĻ–āĻ¤ā§‡-āĻ†āĻ—ā§‡ āĻ˛āĻ—āĻŋāĻ‚ āĻ…āĻ•ā§āĻˇāĻŽ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻŋ (wal_mode = āĻ•ā§‹āĻ¨āĻŸāĻŋ āĻ¨āĻ¯āĻŧ) āĻāĻŦāĻ‚ āĻŦāĻ°ā§āĻ§āĻŋāĻ¤ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻŦāĻžāĻĢāĻžāĻ° (readahead = 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%* āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖāĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¨āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻ—āĻĄāĻŧ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ°āĻ•ā§‡ āĻĨā§āĻ°āĻŸāĻ˛āĻŋāĻ‚ āĻĨā§‡āĻ•ā§‡ āĻ†āĻŸāĻ•āĻžāĻ¤ā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ 1 āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡āĻ° āĻŦāĻŋāĻ°āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ˛ā§āĻ¯āĻŧāĻžāĻ° āĻ†āĻŦāĻ°ā§āĻœāĻ¨āĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ•āĻžāĻ°ā§€ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ° āĻ†āĻ—ā§‡ āĻ…āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻžāĻ§ā§āĻ¯ āĻšāĻ¯āĻŧāĨ¤ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻŦāĻžāĻĢāĻžāĻ°āĻŋāĻ‚ āĻ¸āĻ•ā§āĻˇāĻŽ āĻāĻŦāĻ‚ āĻ†āĻŦāĻ°ā§āĻœāĻ¨āĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ•āĻžāĻ°ā§€ āĻ¨āĻŋāĻˇā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻĨāĻžāĻ•ā§‡āĨ¤

* āĻŦāĻŋāĻĒā§āĻ˛āĻŦā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž, āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻāĻŦāĻ‚ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĨā§āĻ°ā§‡āĻļāĻšā§‹āĻ˛ā§āĻĄ āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ• āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļ

āĻ¨ā§€āĻšā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ MacBookPro (2015), āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ - Fedora 30 (āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 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)
āĻŸāĻžāĻ°āĻžāĻ¨ā§āĻŸā§āĻ˛/āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ: 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

* āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ > 7.2 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ PHP 7.3 āĻ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻŸāĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻāĻŦāĻ‚ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻžāĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻĒā§āĻ¯āĻžāĻš.

Đ ĐĩСŅƒĐģŅŒŅ‚Đ°Ņ‚Ņ‹

āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻŽā§‹āĻĄ

Tarantool āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŽā§‡āĻ¸ā§‡āĻœāĻĒā§āĻ¯āĻžāĻ• āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœ āĻ•āĻ°āĻ¤ā§‡āĨ¤ PECL āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ¤ā§‡, āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻ—āĻ­ā§€āĻ°āĻ¤āĻžāĻ° āĻ—āĻ­ā§€āĻ°ā§‡ āĻ˛ā§āĻ•āĻŋāĻ¯āĻŧā§‡ āĻĨāĻžāĻ•ā§‡ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ˛ā§āĻ¯āĻžāĻ¨ā§āĻĄ āĻ•ā§‹āĻĄ āĻĨā§‡āĻ•ā§‡ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§‡ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¸āĻŽā§āĻ­āĻŦ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧ āĻ¨āĻž. āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§āĻĻā§āĻ§ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€, āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡, āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻāĻ¨āĻ•ā§‹āĻĄāĻžāĻ° āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻŦāĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻžāĻ¸ā§āĻŸāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻŦāĻžāĻ•ā§āĻ¸ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻĻā§āĻŸāĻŋ āĻāĻ¨āĻ•ā§‹āĻĄāĻžāĻ° āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻ•āĻŸāĻŋāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ msgpack/msgpack-php (āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻ¸ā§‡āĻœāĻĒā§āĻ¯āĻžāĻ• PECL āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨), āĻ…āĻ¨ā§āĻ¯āĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻ†āĻ›ā§‡ rybakit/msgpack (āĻŦāĻŋāĻļā§āĻĻā§āĻ§ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋāĻ¤ā§‡)āĨ¤

āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§‡āĻ¸ā§‡āĻœāĻĒā§āĻ¯āĻžāĻ• āĻāĻ¨āĻ•ā§‹āĻĄāĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻ•āĻ°āĻŦ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ¯āĻŧ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ āĻ¯āĻž āĻ¸ā§‡āĻ°āĻž āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻ¯āĻĻāĻŋāĻ“ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ (āĻŦāĻŋāĻļā§āĻĻā§āĻ§) āĻ—āĻ¤āĻŋāĻ¤ā§‡ PECL āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ¨āĻŋāĻ•ā§ƒāĻˇā§āĻŸ, āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻāĻ–āĻ¨āĻ“ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§‡āĻŦ rybakit/msgpack, āĻ•āĻžāĻ°āĻŖ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻ¸ā§‡āĻœāĻĒā§āĻ¯āĻžāĻ• āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ā§‡ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸ āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ†āĻ‚āĻļāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ•āĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨āĻ“ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¨ā§‡āĻ‡, āĻ¯āĻž āĻ›āĻžāĻĄāĻŧāĻž āĻ†āĻĒāĻ¨āĻŋ āĻĻāĻļāĻŽāĻŋāĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž - āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĄā§‡āĻŸāĻž āĻŸāĻžāĻ‡āĻĒ Tarantool 2.3-āĻ¤ā§‡ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡) āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ…āĻ¨ā§āĻ¯āĻĻā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž (PHP 7.4 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻš)āĨ¤ āĻ­āĻžāĻ˛, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻĒāĻ°āĻŋāĻ¤ā§āĻ¯āĻ•ā§āĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧāĨ¤

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻŽā§‹āĻĄā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻ—ā§āĻ°āĻžāĻĢ āĻĨā§‡āĻ•ā§‡ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻ¯āĻŧ, PECL āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ (Tarantool) PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ° (āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ) āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ­āĻžāĻ˛ā§‹ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĻā§‡āĻ–āĻžāĻ¯āĻŧāĨ¤ āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ†āĻļā§āĻšāĻ°ā§āĻ¯ā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ¨āĻ¯āĻŧ, āĻ¯ā§‡ āĻĒāĻ°ā§‡āĻ°āĻŸāĻŋ, āĻāĻ•āĻŸāĻŋ āĻ§ā§€āĻ° āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ†āĻ¸āĻ˛ā§‡ āĻ†āĻ°āĻ“ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡: āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ и āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž (āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ - āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻ¨āĻŋāĻ°ā§āĻŖāĻžāĻ¯āĻŧāĻ•, āĻāĻŦāĻ‚ āĻ†āĻĒāĻĄā§‡āĻŸ/āĻ†āĻĒāĻ¸āĻžāĻ°ā§āĻŸā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ - āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨āĻ¸), āĻĒā§ƒāĻĨāĻ• āĻ¸āĻ¤ā§āĻ¤āĻž āĻ¸āĻ‚āĻ¯ā§‹āĻ—, āĻ­āĻ°āĻ• и āĻ•ā§āĻ°ā§€āĻĄāĻŧāĻžāĻļāĻŋāĻ•ā§āĻˇāĻ• āĻ¤āĻžāĻ°āĻž āĻ“āĻ­āĻžāĻ°āĻšā§‡āĻĄ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨. āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤āĻ‡, āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻ†āĻ¸ā§‡āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĒā§āĻ°ā§‡āĻŸāĻžāĻ° āĻ­āĻžāĻ˛ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ, āĻ¯āĻĻāĻŋāĻ“ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻ†āĻ›ā§‡, āĻāĻŸāĻŋ āĻ¨āĻ—āĻŖā§āĻ¯ āĻāĻŦāĻ‚, āĻ¸āĻŽā§āĻ­āĻŦāĻ¤, āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ 7.4 āĻ āĻĒā§āĻ°āĻŋāĻ˛ā§‹āĻĄāĻŋāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻ°āĻ“ āĻ•āĻŽ āĻšāĻŦā§‡, āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ 8 āĻ āĻœā§‡āĻ†āĻ‡āĻŸāĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ¨āĻž āĻ•āĻ°āĻžāĨ¤

āĻšāĻ˛ āĻāĻ—ā§‹āĻ‡. Tarantool 2.0 SQL āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸āĻŋāĻ˛ā§‡āĻ•ā§āĻŸ, āĻ‡āĻ¨āĻ¸āĻžāĻ°ā§āĻŸ, āĻ†āĻĒāĻĄā§‡āĻŸ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ noSQL (āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°ā§€) āĻ¸āĻŽāĻ¤ā§āĻ˛ā§āĻ¯ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻŋ:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ–ā§āĻŦ āĻšāĻŋāĻ¤ā§āĻ¤āĻžāĻ•āĻ°ā§āĻˇāĻ• āĻ¨āĻ¯āĻŧ (āĻ†āĻŽāĻžāĻ•ā§‡ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻāĻŋāĻ‡ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻ¨āĻ“ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻŽā§‹āĻĄ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ›āĻŋ)āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ†āĻŽāĻŋ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻ†āĻ—ā§‡ āĻāĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻŦāĻŋāĻ°āĻ•ā§āĻ¤ āĻšāĻŦ āĻ¨āĻž; SQL āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ–āĻ¨āĻ“ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻŦāĻŋāĻ•āĻžāĻļā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ (āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻŦāĻŋāĻŦā§ƒāĻ¤āĻŋ) āĻāĻŦāĻ‚, āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻšāĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž, SQL āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻŦā§‡āĨ¤

āĻāĻ¸āĻŋāĻ™ā§āĻ•

āĻ†āĻšā§āĻ›āĻž, āĻāĻ–āĻ¨ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻ• āĻ•āĻŋāĻ­āĻžāĻŦā§‡ Async āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ‰āĻĒāĻ°ā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ•ā§‹āĻ°ā§‹āĻŸāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ API āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡, āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦāĨ¤ āĻ†āĻŽāĻ°āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ‡ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž 25 āĻšāĻ˛:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
10,000āĻŸāĻŋ āĻ•ā§‹āĻ°ā§‹āĻŸāĻŋāĻ¨ āĻœā§āĻĄāĻŧā§‡ 25āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ "āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨" āĻāĻŦāĻ‚ āĻĻā§‡āĻ–ā§āĻ¨ āĻ•āĻŋ āĻšāĻ¯āĻŧ:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž 3 āĻ—ā§āĻŖā§‡āĻ° āĻŦā§‡āĻļāĻŋ āĻŦā§‡āĻĄāĻŧā§‡āĻ›ā§‡ tarantool-php/client!

āĻĻā§āĻƒāĻ–ā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧ, PECL āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ ext-async āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤

āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻŋ?

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨, āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻŽā§‹āĻĄā§‡ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻāĻŦāĻ‚ SQL āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻŽāĻžāĻ°ā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡āĨ¤

āĻ¸ā§āĻ˛ā§‡

āĻ†āĻŦāĻžāĻ° āĻ†āĻŽāĻ°āĻž āĻ•ā§‹āĻ°ā§‹āĻŸāĻŋāĻ¨ā§‡āĻ° āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻŋ, āĻāĻŦāĻžāĻ° Swoole-āĻāĻ° āĻœāĻ¨ā§āĻ¯:
Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻ†āĻ¸ā§āĻ¨ 25 āĻ āĻĨāĻžāĻŽāĻŋāĨ¤ āĻ†āĻ¸ā§āĻ¨ Async āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ā§‡āĻ° āĻŽāĻ¤ā§‹ āĻāĻ•āĻ‡ āĻ•ā§ŒāĻļāĻ˛āĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°āĻŋ - 10,000āĻŸāĻŋ āĻ•ā§‹āĻ°ā§‹āĻŸāĻŋāĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ 25āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ†āĻŽāĻ°āĻž āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻœāĻ•ā§‡ 2āĻŸāĻŋ āĻĻā§āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ­āĻžāĻ— āĻ•āĻ°āĻŦ (āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž 5,000āĻŸāĻŋ āĻ•ā§‹āĻ°ā§‹āĻŸāĻŋāĻ¨ā§‡ 25āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°āĻŦā§‡)āĨ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡ SwooleProcess.

āĻĢāĻ˛āĻžāĻĢāĻ˛:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
Swole āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻ˛āĻžāĻ•āĻžāĻ˛ā§€āĻ¨ Async-āĻāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ•āĻŋāĻ›ā§āĻŸāĻž āĻ•āĻŽ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ 2āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ āĻ¨āĻžāĻŸāĻ•ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧ (2 āĻ¨āĻŽā§āĻŦāĻ°āĻŸāĻŋ āĻ¸ā§āĻ¯ā§‹āĻ— āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧāĻ¨āĻŋ; āĻ†āĻŽāĻžāĻ° āĻŽā§‡āĻļāĻŋāĻ¨ā§‡, āĻāĻŸāĻŋ 2āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ›āĻŋāĻ˛ āĻ¯āĻž āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ)āĨ¤

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ• āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻāĻĒāĻŋāĻ†āĻ‡āĻ“ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻŦā§‡ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻĒā§āĻ°āĻ¸ā§‡āĻ¸ā§‡ āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ• āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻĨā§‡āĻ•ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°āĻŋāĻ¨āĻŋ (āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻŦ āĻ¯ā§‡ āĻ†āĻŽāĻŋ āĻ•ā§‹āĻĨāĻžāĻ“ āĻ—āĻ¨ā§āĻĄāĻ—ā§‹āĻ˛ āĻ•āĻ°ā§‡āĻ›āĻŋ)āĨ¤

āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻŦāĻ¨āĻžāĻŽ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§‡āĻ° āĻŽāĻ¤ā§‹, āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻāĻŦāĻ‚ SQL āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻŽā§‹āĻĄā§‡ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ•ā§‹āĻ°ā§‹āĻŸāĻŋāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻĨā§āĻ°ā§‡āĻĄ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡, āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻĨā§āĻ°ā§‡āĻĄā§‡āĻ° āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻāĻŸāĻž āĻ†āĻŽāĻžāĻ° āĻŽā§‡āĻļāĻŋāĻ¨ā§‡ 16. āĻ†āĻ¸ā§āĻ¨ 16āĻŸāĻŋ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻĨā§āĻ°ā§‡āĻĄā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ• āĻšāĻžāĻ˛āĻžāĻ‡:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨, āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ†āĻ°āĻ“ āĻ­āĻžāĻ˛ (2āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¤ā§‡ āĻšāĻ˛āĻŽāĻžāĻ¨ Swoole āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ āĻ¨āĻž)āĨ¤ āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨ āĻ¯ā§‡ PECL āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻĄā§‡āĻŸ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¸āĻžāĻ°ā§āĻŸ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ–āĻžāĻ˛āĻŋāĨ¤ āĻāĻŸāĻŋ āĻāĻ‡ āĻ•āĻžāĻ°āĻŖā§‡ āĻ¯ā§‡ āĻāĻ‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ - āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻŋ āĻ¨āĻž āĻāĻŸāĻŋ ext-āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛, ext-tarantool āĻŦāĻž āĻ‰āĻ­āĻ¯āĻŧā§‡āĻ° āĻĻā§‹āĻˇ āĻ›āĻŋāĻ˛ āĻ•āĻŋāĻ¨āĻžāĨ¤

āĻāĻ–āĻ¨ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž
āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ­āĻžāĻŦā§‡ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻ—ā§āĻ°āĻžāĻĢā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻĻā§ƒāĻļā§āĻ¯ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°ā§āĻ¨?

āĻāĻ•āĻ¸āĻžāĻĨā§‡

āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻļā§‡āĻˇā§‡, āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻŋāĻ¤ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻŽāĻ—ā§āĻ°āĻŋāĻ• āĻšāĻŋāĻ¤ā§āĻ° āĻĻā§‡āĻ–āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°āĻžāĻĢā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤āĻ¸āĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤ āĻšāĻžāĻ°ā§āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ¯āĻžāĻ•, āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻ¨āĻ“ āĻ•āĻ°āĻŋāĻ¨āĻŋ - āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛* āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ā§‡ Async coroutines āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻ‰āĻĒāĻ°ā§‡āĻ° āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•ā§€āĻ­ā§‚āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻ˛ā§‡āĻ–āĻ•, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•ā§‹āĻ¨ āĻāĻ•ā§āĻ¯āĻŽāĻ¤ āĻĒā§ŒāĻāĻ›ā§‡āĻ¨āĻŋ, āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡.

* āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻš Swoole coroutines āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ›āĻŋāĻ˛ āĻ¨āĻž; āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻāĻ‡ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻŦā§‡āĻŽāĻžāĻ¨āĻžāĻ¨āĨ¤

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛:

Async, Swoole āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Tarantool-āĻāĻ° āĻœāĻ¨ā§āĻ¯ PHP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž

āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°ā§‡āĻ°

āĻ†āĻŽāĻžāĻ° āĻŽāĻ¤ā§‡, āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻŦā§‡āĻļ āĻ¯ā§‹āĻ—ā§āĻ¯ āĻŦāĻ˛ā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻ°āĻŖā§‡ āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ¸ā§€āĻŽāĻž āĻ¨āĻ¯āĻŧ! āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻāĻŸāĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ•āĻŋāĻ¨āĻž, āĻ†āĻŽāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻŦāĻ˛āĻŦ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ›āĻŋāĻ˛ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ TCP āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ āĻĨā§‡āĻ•ā§‡ āĻ•āĻ¤āĻŸāĻž "āĻ†āĻ‰āĻŸ" āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ§āĻžāĻ°āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ˛ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°ā§‡ āĻ–ā§āĻļāĻŋ āĻšāĻŦāĨ¤ āĻ˛āĻžā§āĻš āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¸āĻš āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§‹āĻĄ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛.

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨