Comments 22
Опрос касается асинхронности вообще или конкретно в PHP?
Для PHP это актуальное слабое место, т.ч. спасибо за видео.
Следует уточнить что слабое место именно в отсутствии качественных решений для реализации асинхронности. Даже та же работа с базами данных уже проблема. Нативный драйверы для postgresql и mysql в принципе поддерживают асинхронную работу с базой, и при чем довольно давно, но вот PDO этого делать не умеет. С другой стороны намного более проще поднять пул процессов-воркеров, которые работают синхронно, и распределять по ним задачи на обработку запросов с процесса-балансера через какую-нибудь очередь например. Так можно изрядно ускорить систему и при этому не сильно переделывать архитектуру приложения.
Спасибо за комментарий, я все это прекрасно понимаю :)
Ну так я не вам конкретно, я хотел мысль раскрыть, что бы впечатлительные люди не кричали потом что-то в духе «PHP не умеет асинхронщину». У людей до сих пор какой-то страх циклических ссылок со времен < 5.3 остался, и PHP у них должен умирать.
UFO just landed and posted this here
нет, они все таки сделают из php ноду! :)
Только еще и многопоточность ;)
Из коробки многопоточности нет ни в PHP ни в node.js, с другой стороны есть модули добавляющие эту возможность. Да и многопоточность нужна довольно редко, достаточно комбинации из нескольких процессов и event-loop
ну, в ноде ее нет в принципе, и напильником она не впилится по любому. Можно эмулировать, запуская много нод, но мы то знаем… А вот чего действительно сейчас не хватает php-сообществу (именно не хватает, я не говорю что этого нет в принципе) — это умения общаться :) Мне за этот коммент минусов в карму накидали больше чем в дебатах на религиозные и политические темы. Хорошо хоть обзываться не начали :) Хотя к php я неплохо отношусь, нормальный инструмент, какое то время и на нем сидел. Ну да ладно, это все мелочи.
в ноде ее нет в принципе
github.com/audreyt/node-webworker-threads
И это не единственная реализация. Есть и отдельно треды, есть пулы воркеров, есть еще куча других полезных вещей покрывающих 99% всех возможных юзкейсов.
Мне за этот коммент минусов в карму накидали больше чем в дебатах на религиозные и политические темы
Ну это как бы тоже религиозно-политическая тема так сказать :) Да и давайте обсудим ваше утверждение.
сделают из php ноду
PHP и JavaScript довольно разные языки, с разными подходами и т.д. А та фишка ноды из-за которой она стала так популярна — event loop (это пожалуй самый простой способ дать людям простой и эффективный механизм работы с I/O) — не является специфичной штукой для node.js и реализован он был задолго до появления ноды даже в самом PHP (расширения libevent и libev существуют довольно давно).
Вывод, человек пришел и сделал вброс на тему «зачем делать из PHP ноду а не просто взять ноду», при этом даже не обдумав возможные кейсы когда это может понадобиться и в контексте чего. И пошли минусы.
Думаю вопрос будет уместен. Сейчас есть идея реализации SOA приложения. И встаёт такая задачка, например пришел заказ от клиента на покупку товара. Нам нужно его оплатить, подразумевается, что оплата это длительный процесс зависящий от третих «лиц» и его нужно выносить в отдельный сервис. Мы делаем отдельный сервис, с очередью для балансировки нагрузки. Но встаёт такой важный момент, информация прошла ли оплата или нет для нас критична. Т.е. пока мы не получим ответ от сервера мы не можем решить что показывать пользователю, прошла ли его покупка или нет.
Как этот вопрос решается правильно с точки зрения архитектуры приложения? Есть идеи или мысли на этот счёт?
P.S. По идеи это должно быть реализовано на уровне эвентов. Т.е. заказ ушел на оплату и всё. Как оплата прошла, срабатывает тригер и все слушатели продолжают делать свою работу, но как это правильно реализовать в приложение? Вешать скрипт до момента ответа? Тогда получается, что толку от асинхронности не будет.
Как этот вопрос решается правильно с точки зрения архитектуры приложения? Есть идеи или мысли на этот счёт?
P.S. По идеи это должно быть реализовано на уровне эвентов. Т.е. заказ ушел на оплату и всё. Как оплата прошла, срабатывает тригер и все слушатели продолжают делать свою работу, но как это правильно реализовать в приложение? Вешать скрипт до момента ответа? Тогда получается, что толку от асинхронности не будет.
Да, использовал, не более пяти раз.
Нет, но слышу не в первый раз.
Нет, но слышу не в первый раз.
Ох, ё-мае, спустя почти целый год я увидел видео своего доклада )
UFO just landed and posted this here
Sign up to leave a comment.
Асинхронный PHP — миф? Реальность! Видео с DevConf 2014