Доклад посвящен асинхронному программированию в PHP, где будут рассмотрены все доступные для разработчика возможности: от самых примитивных до самых высокотехнологичных, о которых вы еще, возможно, не знаете.

Асинхронное программирование весьма интересное направление, за которым будущее в разработке, надо уметь делать работу параллельно, вовремя реагировать на события и масштабироваться.

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

Проголосовало 425 человек. Воздержалось 137 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Комментарии (22)


  1. john_samilin
    28.05.2015 11:07
    +2

    Опрос касается асинхронности вообще или конкретно в PHP?


    1. phpclub Автор
      28.05.2015 11:14
      +1

      Вообще! PHP — как частный случай реализации.


  1. WaveCut
    28.05.2015 11:20
    +2

    Для PHP это актуальное слабое место, т.ч. спасибо за видео.


    1. Fesor
      28.05.2015 11:51
      +3

      Следует уточнить что слабое место именно в отсутствии качественных решений для реализации асинхронности. Даже та же работа с базами данных уже проблема. Нативный драйверы для postgresql и mysql в принципе поддерживают асинхронную работу с базой, и при чем довольно давно, но вот PDO этого делать не умеет. С другой стороны намного более проще поднять пул процессов-воркеров, которые работают синхронно, и распределять по ним задачи на обработку запросов с процесса-балансера через какую-нибудь очередь например. Так можно изрядно ускорить систему и при этому не сильно переделывать архитектуру приложения.


      1. WaveCut
        28.05.2015 11:53

        Спасибо за комментарий, я все это прекрасно понимаю :)


        1. Fesor
          28.05.2015 12:47

          Ну так я не вам конкретно, я хотел мысль раскрыть, что бы впечатлительные люди не кричали потом что-то в духе «PHP не умеет асинхронщину». У людей до сих пор какой-то страх циклических ссылок со времен < 5.3 остался, и PHP у них должен умирать.


          1. WaveCut
            28.05.2015 15:34

            Да, я сам до позапрошлого года кричал страшилки о текучести PHP, пока не сел и не проверил все версии линейки 5+. Был приятно удивлен, чему и радуюсь до сих пор в обнимку с демоном, работающим неделями. Если в PHP что-то течет, то это какое-то расширение какого либо внешнего ресурса.


  1. PerlPower
    28.05.2015 13:19
    +3

    Очень хороший доклад, спасибо.


  1. gonzazoid
    28.05.2015 13:50
    -7

    нет, они все таки сделают из php ноду! :)


    1. kolpeex
      30.05.2015 09:00

      Только еще и многопоточность ;)


      1. Fesor
        30.05.2015 09:14

        Из коробки многопоточности нет ни в PHP ни в node.js, с другой стороны есть модули добавляющие эту возможность. Да и многопоточность нужна довольно редко, достаточно комбинации из нескольких процессов и event-loop


        1. gonzazoid
          30.05.2015 10:00

          ну, в ноде ее нет в принципе, и напильником она не впилится по любому. Можно эмулировать, запуская много нод, но мы то знаем… А вот чего действительно сейчас не хватает php-сообществу (именно не хватает, я не говорю что этого нет в принципе) — это умения общаться :) Мне за этот коммент минусов в карму накидали больше чем в дебатах на религиозные и политические темы. Хорошо хоть обзываться не начали :) Хотя к php я неплохо отношусь, нормальный инструмент, какое то время и на нем сидел. Ну да ладно, это все мелочи.


          1. Fesor
            30.05.2015 10:27

            в ноде ее нет в принципе

            github.com/audreyt/node-webworker-threads

            И это не единственная реализация. Есть и отдельно треды, есть пулы воркеров, есть еще куча других полезных вещей покрывающих 99% всех возможных юзкейсов.

            Мне за этот коммент минусов в карму накидали больше чем в дебатах на религиозные и политические темы

            Ну это как бы тоже религиозно-политическая тема так сказать :) Да и давайте обсудим ваше утверждение.

            сделают из php ноду

            PHP и JavaScript довольно разные языки, с разными подходами и т.д. А та фишка ноды из-за которой она стала так популярна — event loop (это пожалуй самый простой способ дать людям простой и эффективный механизм работы с I/O) — не является специфичной штукой для node.js и реализован он был задолго до появления ноды даже в самом PHP (расширения libevent и libev существуют довольно давно).

            Вывод, человек пришел и сделал вброс на тему «зачем делать из PHP ноду а не просто взять ноду», при этом даже не обдумав возможные кейсы когда это может понадобиться и в контексте чего. И пошли минусы.


            1. gonzazoid
              30.05.2015 10:39

              блин, ну Вы хотя бы себе в зеркале ведь улыбаетесь?


              1. Fesor
                30.05.2015 10:40
                +1

                Жизнь боль, все тлен


  1. OneArt
    28.05.2015 17:54

    Думаю вопрос будет уместен. Сейчас есть идея реализации SOA приложения. И встаёт такая задачка, например пришел заказ от клиента на покупку товара. Нам нужно его оплатить, подразумевается, что оплата это длительный процесс зависящий от третих «лиц» и его нужно выносить в отдельный сервис. Мы делаем отдельный сервис, с очередью для балансировки нагрузки. Но встаёт такой важный момент, информация прошла ли оплата или нет для нас критична. Т.е. пока мы не получим ответ от сервера мы не можем решить что показывать пользователю, прошла ли его покупка или нет.
    Как этот вопрос решается правильно с точки зрения архитектуры приложения? Есть идеи или мысли на этот счёт?

    P.S. По идеи это должно быть реализовано на уровне эвентов. Т.е. заказ ушел на оплату и всё. Как оплата прошла, срабатывает тригер и все слушатели продолжают делать свою работу, но как это правильно реализовать в приложение? Вешать скрипт до момента ответа? Тогда получается, что толку от асинхронности не будет.


    1. Fedot
      28.05.2015 19:17
      +1

      Если идёт как-то длительная операция, то пользователю нужно показывать что идёт процесс обработки. И когда процесс завершится показать ему результат.


    1. dgstudio
      28.05.2015 20:57
      +2

      1. OneArt
        29.05.2015 15:12

        Спасибо! Уже нашел эту статью, и рекомендую всем, толково описано.


  1. ainu
    29.05.2015 09:40

    Да, использовал, не более пяти раз.
    Нет, но слышу не в первый раз.


  1. NightTiger
    02.06.2015 09:52
    +2

    Ох, ё-мае, спустя почти целый год я увидел видео своего доклада )


  1. m0Ray
    09.06.2015 00:44

    Без Flash нельзя посмотерть это видео? Хорошо, не буду смотреть, уговорили.