корутины, каналы, потоки, асинк, и документация на китайском! Собственно, это меня и остановило.смотрите что товарищи выворяют: https://github.com/swoole/swoole-src - корутины, каналы, потоки, асинк, и свежее!
https://pecl.php.net/package/swoole
Fortunately, HHVM provides an async version of curl_exec()
ES20xx/Typescript, 1 в 1такое же, только другое
только без постгреса, редса, файловых операцийES20xx/Typescript, 1 в 1
и заблокируйся на первом же вызове.а у китайцев сделай канал, оберни в корутину
Это намного сложнее.еще бы динамически вытесняло блокирующие вызовы в потоки
написано, что блокирующие вызовы можно вынести в Task Worker - но как это работает, я еще не проверяли заблокируйся на первом же вызове.
То есть не треды, а процессы? Так в php сработает, но много возни с синхронизацией через shared memory (можно и иначе, но через shared memory производительнее всего). Не факт, что они так заморочились (хотя надо смотреть). А без нее может получиться весело с конкуретным доступом.написано, что блокирующие вызовы можно вынести в Task Worker
Ну то есть опять же самодельная реализация протоколов, как и в случае с ReactPHP.постгреса, редиса, websocket/dns/http
Отдельными микросервисами, да, самое то. Я обычно всякую такую обработку через очередь делаю, чтобы пиковых нагрузок не было и не возиться с обработкой ошибок в момент вызова.фотки, архивы, бекапы
и вернулись к вопросу где очередь - fpm при всем желании сам из очереди задачи не выгребет, ни из редиса, ниоткуда, нужен дирижер, асинхронный, который отловит событие и, как писал Флоппик, откроет соединение с fpmОтдельными микросервисами, да, самое то. Я обычно всякую такую обработку через очередь делаю, чтобы пиковых нагрузок не было и не возиться с обработкой ошибок в момент вызова.