yield is used to “await” promises, yield from can be used to delegate to a sub-routine. yield from should only be used to delegate to private methods, any public API should always return promises instead of generators.
Вам нужно почитать статью от Никиты, тогда станет понятно откуда там взялся yield и почему код выглядит, как синхронный (каждый вызов execute и fetchOne возвращает Promise).
Мой косяк. Я не стал в статье углубляться в вопросы корутин и, вероятно, это повлияло на восприятие. Мне кажется, что вы имеете в виде callback hell, который мог бы случиться в случае, если бы я руками вызывал всю цепочку промисов.
Потому что кооперативная многозадачность?
Вы для чего брали swoole? что бы демона сделать? Зачем? Для каких целей?
Ну, как бы микроскопом можно гвозди забивать, но стоит ли?
Можно было взять много чего. Если рассматривать только php, то есть еще amp.
он популярнее amp и roadrunner
Вы правда понимаете для чего нужны все перечисленные инструменты? В тексте чувствуется глубокое понимание темы.
помимо сервера у него есть много дополнительных возможностей среди которых: корутины, асинхронные операции
Те самые, что не будут работать должным образом из-за блокировки вами потока выполнения, да?
Единственный для меня минус: нет возможности использовать на shared хостингах или на VPS c openVZ, если swoole не установлен хостером.
Вы swoole притянули за уши только потому, что можете. Толку от него, как с козла молока и ни одного плюса нет (есть, но вы их все похоронили собственноручно)
На самом деле swoole тут совсем не к месту. Поясню слегка...
Использование swoole подразумевает отсутствие блокирующих операций. Как только таковые встречаются, карета превращается в тыкву. Использование неспециализированного http клиента, например. Или тот же echo. В общем и целом весь профит от swoole свёлся к демонизации приложения. Но с таким же успехом можно было взять RoadRunner и не париться. Ну и да, каким боком тут микросервисы затесались совсем не понятно
PHP так или иначе будет развиваться в сторону демонов. Вопрос лишь в том, какой ценой.
Если взять в рассчёт не простое echo, а +\- вменяемое приложение, то там есть ещё запас (php-pm и road runner не выгребают всё). На сколько разумно его использовать, глядя на «конкурентов» — хз, ведь это потребует очень большого разворота в головах php программистов.
Наверное, проще всё же взять какой-нибудь kotlin и не страдать.
Отлично — понятие довольно расплывчатое.
У того же php-pm под капотом будут ровно те же проблемы с блокирующим io. Ну т.е. мы не получаем эффекта от кооперативной многозадачности. Только минус к бутстрапингу.
Но, да, в случае с php-pm не будет одного из ключевых минусов reactphp с заблокированным лупом. Главным образом за счёт воркеров
Тот же reactphp используется дай бог на треть возможностей. Мало просто всё запихнуть в event loop, надо ещё гарантировать, что этот самый loop ничего не блокирует.
Именно поэтому он абсолютно не годится для всяких фреймворков. Воткнуть можно, но вреда будет больше, чем пользы (ну только в hello world'ах всё красиво)
Отличное допущение.
Зачем анализатор в принципе нужен, многие современные фреймворки и ошибки вполне себе в исключения конвертируют.
У нас явная ошибка, вызванная ленью\глупостью (нужное подчеркнуть). Почему она должна быть проигнорирован анализатором? Потому, что в исключение сконвертируется и кем-то где-то будет перехвачено?
В этом и «фишка». Код, по сути, ни чем не отличается от привычного (даже вы сходу подвоха не разглядели). Знай себе, расставляй
yield
.С точки зрения транзакций есть 2 варианта использования:
Привычный для тех, кто пользовался, например, Doctrine (метод transactionl): https://gist.github.com/mmasiukevich/722f87f6ec657a00b782cb646233dec0
и обычный: https://gist.github.com/mmasiukevich/c2eb86974cc0a0b2787734e0196d6ec2
yield
is used to “await” promises,yield from
can be used to delegate to a sub-routine.yield from
should only be used to delegate to private methods, any public API should always return promises instead of generators.https://amphp.org/amp/coroutines/
Вам нужно почитать статью от Никиты, тогда станет понятно откуда там взялся
yield
и почему код выглядит, как синхронный (каждый вызовexecute
иfetchOne
возвращаетPromise
).Мой косяк. Я не стал в статье углубляться в вопросы корутин и, вероятно, это повлияло на восприятие. Мне кажется, что вы имеете в виде callback hell, который мог бы случиться в случае, если бы я руками вызывал всю цепочку промисов.
https://gist.github.com/mmasiukevich/b7484b90a01046df4919dbf1c99912b9
Не вижу особой разницы, если честно. А если ещё перестать пользоваться sequence в пользу uuid, совсем проще будет.
У этих двух инструментов очень мало общего (если вообще что-то есть).
Когда сможете для себя разницу описать, поймёте как там с файлами дела обстоят.
Потому что кооперативная многозадачность?
Вы для чего брали swoole? что бы демона сделать? Зачем? Для каких целей?
Ну, как бы микроскопом можно гвозди забивать, но стоит ли?
Вы правда понимаете для чего нужны все перечисленные инструменты? В тексте чувствуется глубокое понимание темы.
Те самые, что не будут работать должным образом из-за блокировки вами потока выполнения, да?
Вы swoole притянули за уши только потому, что можете. Толку от него, как с козла молока и ни одного плюса нет (есть, но вы их все похоронили собственноручно)
На самом деле swoole тут совсем не к месту. Поясню слегка...
Использование swoole подразумевает отсутствие блокирующих операций. Как только таковые встречаются, карета превращается в тыкву. Использование неспециализированного http клиента, например. Или тот же
echo
. В общем и целом весь профит от swoole свёлся к демонизации приложения. Но с таким же успехом можно было взять RoadRunner и не париться. Ну и да, каким боком тут микросервисы затесались совсем не понятноЕсли взять в рассчёт не простое echo, а +\- вменяемое приложение, то там есть ещё запас (php-pm и road runner не выгребают всё). На сколько разумно его использовать, глядя на «конкурентов» — хз, ведь это потребует очень большого разворота в головах php программистов.
Наверное, проще всё же взять какой-нибудь kotlin и не страдать.
У того же php-pm под капотом будут ровно те же проблемы с блокирующим io. Ну т.е. мы не получаем эффекта от кооперативной многозадачности. Только минус к бутстрапингу.
Но, да, в случае с php-pm не будет одного из ключевых минусов reactphp с заблокированным лупом. Главным образом за счёт воркеров
Тот же reactphp используется дай бог на треть возможностей. Мало просто всё запихнуть в event loop, надо ещё гарантировать, что этот самый loop ничего не блокирует.
Именно поэтому он абсолютно не годится для всяких фреймворков. Воткнуть можно, но вреда будет больше, чем пользы (ну только в hello world'ах всё красиво)
Зачем анализатор в принципе нужен, многие современные фреймворки и ошибки вполне себе в исключения конвертируют.
У нас явная ошибка, вызванная ленью\глупостью (нужное подчеркнуть). Почему она должна быть проигнорирован анализатором? Потому, что в исключение сконвертируется и кем-то где-то будет перехвачено?