Как стать автором
Обновить
17
0
Масюкевич Максим @mmasiukevich

Software developer

Отправить сообщение

В этом и «фишка». Код, по сути, ни чем не отличается от привычного (даже вы сходу подвоха не разглядели). Знай себе, расставляй 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, совсем проще будет.

Я всё же немного не понимаю, в чём это выражается.
В статье всё указано, быть может недостаточно отчётливо, но всё же: взаимодействие с постгресом выполняется в асинхронном режиме.
Собственно, почему бы и нет. Время идёт, PHP развивается. Только в глазах хейтеров он остаётся на том же уровне, что и был десяток лет назад.
Попробуйте понять разницу между Swoole и RoadRunner.
У этих двух инструментов очень мало общего (если вообще что-то есть).

Когда сможете для себя разницу описать, поймёте как там с файлами дела обстоят.
Почему вы считаете, что подразумевает?

Потому что кооперативная многозадачность?
Вы для чего брали swoole? что бы демона сделать? Зачем? Для каких целей?
Ну, как бы микроскопом можно гвозди забивать, но стоит ли?
Можно было взять много чего. Если рассматривать только php, то есть еще amp.
он популярнее amp и roadrunner

Вы правда понимаете для чего нужны все перечисленные инструменты? В тексте чувствуется глубокое понимание темы.
помимо сервера у него есть много дополнительных возможностей среди которых: корутины, асинхронные операции

Те самые, что не будут работать должным образом из-за блокировки вами потока выполнения, да?
Единственный для меня минус: нет возможности использовать на shared хостингах или на VPS c openVZ, если swoole не установлен хостером.

Вы swoole притянули за уши только потому, что можете. Толку от него, как с козла молока и ни одного плюса нет (есть, но вы их все похоронили собственноручно)

На самом деле swoole тут совсем не к месту. Поясню слегка...


Использование swoole подразумевает отсутствие блокирующих операций. Как только таковые встречаются, карета превращается в тыкву. Использование неспециализированного http клиента, например. Или тот же echo. В общем и целом весь профит от swoole свёлся к демонизации приложения. Но с таким же успехом можно было взять RoadRunner и не париться. Ну и да, каким боком тут микросервисы затесались совсем не понятно

Казалось бы, почему PHP'шников за людей не считают… Открываешь вот в 2к19 такую статью, а затем комменты к оной, и… Грустно это
PHP так или иначе будет развиваться в сторону демонов. Вопрос лишь в том, какой ценой.
Если взять в рассчёт не простое echo, а +\- вменяемое приложение, то там есть ещё запас (php-pm и road runner не выгребают всё). На сколько разумно его использовать, глядя на «конкурентов» — хз, ведь это потребует очень большого разворота в головах php программистов.
Наверное, проще всё же взять какой-нибудь kotlin и не страдать.
Отлично — понятие довольно расплывчатое.
У того же php-pm под капотом будут ровно те же проблемы с блокирующим io. Ну т.е. мы не получаем эффекта от кооперативной многозадачности. Только минус к бутстрапингу.

Но, да, в случае с php-pm не будет одного из ключевых минусов reactphp с заблокированным лупом. Главным образом за счёт воркеров
небольшой оффтоп:

Тот же reactphp используется дай бог на треть возможностей. Мало просто всё запихнуть в event loop, надо ещё гарантировать, что этот самый loop ничего не блокирует.
Именно поэтому он абсолютно не годится для всяких фреймворков. Воткнуть можно, но вреда будет больше, чем пользы (ну только в hello world'ах всё красиво)
Возможность в чатике попинать pronskiy и узнать всякое разное, накидать идей и мелких фиксов, которые, к слову сказать, даже случаются)
В след. версии подвезут тайпхинты на свойства
Отличное допущение.
Зачем анализатор в принципе нужен, многие современные фреймворки и ошибки вполне себе в исключения конвертируют.
У нас явная ошибка, вызванная ленью\глупостью (нужное подчеркнуть). Почему она должна быть проигнорирован анализатором? Потому, что в исключение сконвертируется и кем-то где-то будет перехвачено?
Попробуйте psalm'ом отловить такой (https://getpsalm.org/r/c7a1281897):

declare(strict_types = 1);

function parse(string $fileContent): array
{
    return [$fileContent];
}

parse(file_get_contents('/someWrongPath'));

Информация

В рейтинге
Не участвует
Откуда
Alkmaar, Noord-Holland, Нидерланды
Дата рождения
Зарегистрирован
Активность