Node.js: в чём он лучше PHP и как развернуть это чудо на реальном сервере

Поділитися
Вставка
  • Опубліковано 5 гру 2022
  • Hello World Server на Node.js
    Сравнение с PHP для организации Server Sent Events
    Установка node на VDS
    Простейшая схема привязки к домену с помощью nginx proxy_pass
    А скоро курс - js.dmitrylavrik.ru/node/
    В ролике использовался сервер от firstvds. Слабенький промокод, если вдруг соберётесь к ним - 6481121431

КОМЕНТАРІ • 86

  • @CHPK-STEPLER
    @CHPK-STEPLER Рік тому +10

    Насчет того что нужно развиваться постепенно полностью с тобой согласен. Это твоя сильная сторона - разжевывать без лишних усложнений. Спасибо тебе за твой труд.

  • @alexanderchaika8673
    @alexanderchaika8673 Рік тому +8

    Мне очень нравится этот преподаватель. Так держать Дмитрий

    • @uzurbatya
      @uzurbatya 4 місяці тому

      Однозначно, преподаватель он замечательный

  • @DeadlockFree
    @DeadlockFree Рік тому +3

    На 09:40 упоминается Swoole, который как раз абсолютно то же самое позволяет реализовывать. Было выдвинуто предположение что на основе микрослипов. Ровно с таким же успехом можно предположить, что и node.js это делает на микрослипах. Модули php не основываются на языке php, не ограничиваются его синтаксисом, ограничениями и т.п., они пишутся как правило на C или C++ и наоборот расширяют возможности базового ПХП. Ну и вот видимо, Swoole хороший тому пример, в рамках рассмотренной задачи.

  • @memoryspeak
    @memoryspeak Рік тому +1

    Отличный пример, спасибо.

  • @zurkevich
    @zurkevich Рік тому +3

    Дмитрий, вы слукавили, данная задача решается на PHP при помощи сокета, селекта и генератора. Получается полностью идентичный функционал, асинхронно в один поток, без использования дополнительных экземпляров скрипта для каждого клиента.

  • @grxgvr4987
    @grxgvr4987 11 місяців тому +5

    Природа php настолько же синхронна насколько и синхронна природа js. Если говорить про EventLoop то он является отдельным модулем написанным на С++ (lib-uv) в случае node js. Как и swoole является отдельным модулем написанным на С++. Если уж говорить про платформу то более честным сравнением будет node и swoole + php или же amphp в котором между прочим в качестве одного из драйверов eventloop выступает libuv, тот же что и в node. Конкретно в данном случае для ноды eventloop идёт из коробки что конечно удобне в случае когда хочется получить результат быстрее чем ставить отдельные модули. Но опять же сравнение не корректное так как автор говорит о преимуществах ноды из 2013, на сегодняшний день не так просто найти серверный язык который не умеет в асинхронную обработку.

  • @react6678
    @react6678 Рік тому +1

    Благодарю Дмитрия за качественный материал с изучения которого невозможно соскочить

  • @user-qv6rt4oz9o
    @user-qv6rt4oz9o Рік тому +1

    Отличная подача!!! Все супер понятно! Спасибо большое!

  • @DailyGuideVideos
    @DailyGuideVideos 2 місяці тому

    2 Дня мучался с тем как заставить ноду заработать)))
    Спасибо за видео)

  • @Crazzy501
    @Crazzy501 Рік тому +2

    отличный инструмент в помощь php бекенду

  • @renegat-rm
    @renegat-rm Рік тому +4

    Специалист становится профессиональным инженером тогда, когда перестает чмырить труд других специалистов...

  • @mk3mk3mk
    @mk3mk3mk Рік тому +5

    я сам долго выбирал стек. Смотрел в сторону php, node.js, python и др.
    и именно то, что можно легко разместить, определило выбор в сторону php.
    потому что node.js это надо vps, либо heroku
    a php на любом сервере есть

    • @user-nu2jz1sb4s
      @user-nu2jz1sb4s Рік тому

      Когда что-то серьезное на пыхе, тоже лучше vps

    • @sharkman6434
      @sharkman6434 Рік тому

      в смысле на любом сервере- то есть сделаешь простейший апи сервер для фронта -загрузишь это на тот же vercel или netlify и будет работать ? на ноде сервера не пишу, пишут их на экспресе или на несте ) на ноде приложения пишу а ля вебпак например )

    • @user-nu2jz1sb4s
      @user-nu2jz1sb4s Рік тому

      @@sharkman6434 А экспресс и нест на чём написаны?

  • @chip253
    @chip253 Рік тому +4

    Преодолеть природу легко - используйте ReactPhp. Запустите сервер как процесс и обрабатывайте запросы аналогично ноду... Странно многие не знают современный php может работать как в синхронном так и в асинхроннм режиме. Вы можете так же использовать промисы и async. На node это легче и быстрей.

    • @tnsaturday
      @tnsaturday Рік тому

      Так и на питоне вроде как давно уже можно. Видео только начал смотреть, поэтому мнения по ноде пока нет.

  • @user-nu2jz1sb4s
    @user-nu2jz1sb4s Рік тому +3

    Ну Swoole фактически делает из пыха нод жс, в том числе и асинхронность.

  • @__kawaii
    @__kawaii Рік тому +3

    Дмитрий, Вы самый интересный рассказчик в айти. Серьезно, я не знаю никого красноречивее, просто тупо приятно слушать, а главное все понятно. Нов видео совершенно никаких таких доводов к изучению ноды нет. По сути это прослойка между клиентом и php-сервером, для работы с сокетами. Но дело в том, чтобы работать по такой схеме, учить ноду не нужно вообще, достаточно установить пакет с вебсокет-сервером из npm, настроить за две минуты по мануалу и больше ноду изнутри не трогать годами, крутится и крутится. Я так понимаю что ниша не поменяется: монолит - php \ .net, микросервисы - go, вебсокеты - нода

  • @RomanRachkov
    @RomanRachkov Рік тому +1

    Дмитрий, здравствуйте. Хотелось бы узнать а вы SmartGrid поддерживаете еще? Просто на гитхабе смотрю вам еще с июля отправили пулреквест на использование math.div в sass билде. а то я вот ща познакомился с ним и мне понравилось. Да только вот деприкейты глаза мазолят)

  • @DodgeViper188
    @DodgeViper188 Рік тому

    Я обязательно куплю курс у этого парня!

  • @Tavda
    @Tavda Рік тому +5

    А из PHP разве нельзя своего демона делать, который тоже самое будет делать? Знаю, что можно из PHP запускать дочерние процессы. Даже как-то делал такое, но из-за systemd выкинул эту ненужную мне штуку и стал запускать просто несколько процессов (это просто было компоненты демона, которые занимались разными делами, получали данные из порта, обрабатывали и отправляли POST запросом на веб-сервер). Ну и тот же Redis использовать для передачи событий к демону.

  • @AleksandrArtroom
    @AleksandrArtroom 11 місяців тому +1

    Не подумайте, что реклама, но на Бегете в стандартном хостинге есть поддержка Ноде.ЖС на которой я сделал сайт.
    Реализовали они Нод через Докер и не надо мучить мозг и что то там арендовать дополнительное и настраивать свой сервер.

    • @DimaTiunov
      @DimaTiunov 7 місяців тому

      Да…
      Но работает он там довольно спорно. Лучше билдить всё в локальном гитлабе, а ставить всё уже на любом шареде без сборки

  • @user-sl4jq9op9l
    @user-sl4jq9op9l Рік тому +3

    а ролик крутой, лайк!
    так а что, PHP не умеет в асинхрон? или sleep() в асинхронном выполнении работает также?
    (я 1Сник)

    • @radikovichkz2470
      @radikovichkz2470 Рік тому +1

      Php рожден чтобы умирать, а чтобы сделать его работающим процессом достаточно связать с roadrunner. Не стоило автору сравнивать с node js абсолютно разные инструменты

  • @frontenddeveloper7987
    @frontenddeveloper7987 Рік тому +16

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

  • @makaronnik1988
    @makaronnik1988 Рік тому +1

    Без слипов прекрасно работает Amphp. У него под капотом ивентлуп по типу js-кого и если правильно писать, то нет и блокировок. Но, в плане расширяемости и комьюнити он сильно проигрывает ноду и бесчисленному количеству фреймворков и библиотек

  • @user-lc9wi7cz8d
    @user-lc9wi7cz8d Рік тому

    Хорошо бы в перспективе сделать курс linux-а для вэб-разработчиков

  • @justth0r
    @justth0r Рік тому +1

    Согласен по поводу развития постепенно, для начала надо было пробросить порты через маршрутизатор в интернет и сделать из своего ПК хост, без использования платных хостингов, где слишком много геморроя было показано, а запуск сервера через консоль, это эпик =) на PHP закинул и всё работает без танцев с бубном. Начали с того, чем лучше, а закончили тем, чем хуже =)
    каждая технология хороша для своих задач.

  • @deluxenew1
    @deluxenew1 Рік тому +1

    мощь!

  • @juicygirls3989
    @juicygirls3989 Рік тому +2

    когда же вы перейдете уже на линуксе

  • @compolomus9719
    @compolomus9719 Рік тому +1

    для новичка пощупать ноду надо выкинуть 2к денег, при том ему вряд ли надо писать онлайн чятики и прочее, ему статику для начала припилить на хтмл + чуть жс, что хватает примерно 200 рублей аренда хостинга с доменом на пол года, там же и пых и мускул

  • @user-wl2xp8yo6x
    @user-wl2xp8yo6x Рік тому +2

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

    • @nomadirl3380
      @nomadirl3380 Рік тому +4

      Дядь, изучи вопрос, не пиши ерунду. Изначально под каждый запрос пользователя создаётся отдельный процесс, грубо говоря php.exe. Таким образом все пользователи работают в своих процессах, они не мешают друг другу. Недостаток в том что каждый раз приходится с нуля прогружать программу-интерпретатор php.exe, со всеми конфигами, глобальными переменными и т.д. Также интерпретатор php.exe можно расширять как угодно, если написать к нему модули на языке С. На этом построены различные приблуды на подобие reactPHP, Swoole и прочих, которые могут "переопределить" стандартное поведение php создавать новые php.exe процессы под каждого пользователя... (Это если коротко).
      А вообще это всё костыли, php морально устарел, есть "языки" которые из коробки работают как того требует здравый смысл (Node.js к ним кстати не относится, это тоже Франкенштейн из говна и палок для умственно отсталых JS-кодеров)

    • @user-wl2xp8yo6x
      @user-wl2xp8yo6x Рік тому +4

      @@nomadirl3380 Не понимаю где ты тут увидел ерунду, и к чему ты это вообще написал. Предположу, чтобы самоутвердиться. Я поясню, что в моем комментрий отсутствует какое либо утверждение и подметил это сугубо из своего опыта словом "как будто", что в принципе моим комментарием и так понятно о чём идёт речь. А ещё зачем то продолжил про ноду и обосрал комьюнити JS с пхп. Одним словом🤡

    • @user-cx8kh4sb2i
      @user-cx8kh4sb2i Рік тому +6

      @@nomadirl3380 лол))) прочитай про fastcgi и php-fpm. php использует только один процесс с конфигом, глоб. переменными и т.д., а дальше php работает как cgi скрипт.
      php морально устарел? лол))) php это лидирующий язык в мире веб. А кто конкуренты? нод? еще в 15 году обещали, что нод обгонит пхп по всем направлениям, но что-то так и не обогнал. питон? вакансий на питоне для веб прогеров в разы меньше, чем на пхп.
      пхп простой, удобный и может решать 97% любых задач, которые надо в вебе. асинхронность решается очередями для большинства задач так же хватает. нужно что-то более быстрое? микросервисы на го в помощь. короч дичь полнейшую ты написал.

    • @nomadirl3380
      @nomadirl3380 Рік тому +1

      @@user-cx8kh4sb2i спасибо за знания

    • @tnsaturday
      @tnsaturday Рік тому

      @@user-cx8kh4sb2i php лидирующий в мире веб? У тебя мир веб - это интернет магазины на вордпресс?

  • @konstantintanat4462
    @konstantintanat4462 Рік тому +1

    возможно ошибаюсь. Не спец в ноде. Но по мне ее главное преимущество один язык на сервере и клиенте. Что для кого то может быть большим плюсом. А в остальном в сравнении с развитыми серверными ЯП преимуществ нет. Поэтому и решил глянуть этот ролик для прояснения темы. Но автор не особо в теме

    • @user-sp1vi7fg2u
      @user-sp1vi7fg2u Рік тому +1

      Нода хороша для задач связанных с вводом/выводом (чат, боты, рендеринг страниц), также, неплохая для не больших/средних систем ибо относительно проста, постоянно развивается, есть годные фреймворки (тот же Nest, Adonis).
      P.S про один язык на сервере и на фронтенде - очень спорный плюс. Да, язык то один, но практики на бекенде и на фронтенде очень отличаются, и все равно фронтендеру прийдется доучиваться чтобы писать бек на ноде (базы данных, линукс, REST, TypeScript ибо на ноде Ts - это как стандарт почти)

    • @DimaTiunov
      @DimaTiunov 7 місяців тому +1

      @@user-sp1vi7fg2uввод вывод намного лучше писать на многопоточном языке, ибо при rpc 100к и больше эвент луп просто умрёт

  • @Hayabusa17
    @Hayabusa17 Рік тому

    а можно установить nodejs без ngnix

  • @StoxFT
    @StoxFT Рік тому +4

    Так и да, где тесты, где хоть какое-нибудь сравнение? Где инфа про JIT, который хреново реализован до сих пор в JS, но нормально реализован в PHP? Я не хейтер, просто непонятно откуда инфа, исключительно интересуюсь

    • @nitroexpress9928
      @nitroexpress9928 Рік тому +3

      А что не так с JIT на ноде? Движок V8 вроде как не дубы делали, да и по факту она очень даже шустро работает (умники всякие любят сравнивать какой-нибудь дотнет в 12 потоков против ноды в один поток и говорить что C# в 5 раз быстрее, но если те же тесты прогнать на ноде в кластерном режиме, оказывается что на самом деле производительность +/- однояйцевая ) -тоже чисто интересуюсь.

  • @lemran5033
    @lemran5033 Рік тому

    "Раздает ответ по интервалу, а не тогда, когда новые данные появились"
    Как из php скрипта передать эти данные в node?

    • @DeadlockFree
      @DeadlockFree Рік тому

      как вариант Redis, по-моему автор в видео это где-то упоминал

  • @DarkShadowWork
    @DarkShadowWork Рік тому

    А джанго как поживает?

  • @ktotut5378
    @ktotut5378 Рік тому +3

    Многопоточность в node?

    • @nitroexpress9928
      @nitroexpress9928 Рік тому +1

      Есть со времен одной из обнов, но в основном просто в кластерном режиме несколько процессов запускают и не парятся.

  • @juicygirls3989
    @juicygirls3989 Рік тому

    не досмотрел до конца но я для хоста юзаю nginx => reverse proxy => pm2 что бы мониторить сам процеесс

  • @user-hz3tr9bu1h
    @user-hz3tr9bu1h Рік тому +3

    А golang не подвинет сильно РНР и nodejs??

    • @DreamingDolphing
      @DreamingDolphing Рік тому +2

      Go и Rust для микросервисов отлично подходят, тут проблема в том, что специалистов на эти языки программирования не так много, они не мейнстримовые.

    • @user-hz3tr9bu1h
      @user-hz3tr9bu1h Рік тому +2

      @@DreamingDolphing растёт популярность

    • @andreykhalepov8260
      @andreykhalepov8260 Рік тому +2

      Всему свое время, Rust завоюет свою нишу, и на нашей улице будет праздник

  • @andrejbasharin9687
    @andrejbasharin9687 Рік тому +5

    node открывает путь во full-stack develop для фронтендера

  • @konstantintanat4462
    @konstantintanat4462 Рік тому +2

    очередной чудо эксперт. Чье гугление вопроса ограничено 2 первыми ссылками. А что мешает использовать сокеты или reactPHP ?

  • @alenache1
    @alenache1 Рік тому +1

    +++++++++++++ 👍👍👍👍👍👍

  • @juicygirls3989
    @juicygirls3989 Рік тому +1

    обожаю express js))

  • @fromillia
    @fromillia Рік тому +2

    "Наверное этот дядя смог преодолеть природу РНР" - К слову о выборе инструмента под задачу)

  • @user-so6bg4ss5h
    @user-so6bg4ss5h Рік тому +1

    php работает через nginx и fpm, никаких 100 процессов index.php не будет

    • @DeadlockFree
      @DeadlockFree Рік тому

      это еще почему-же? Под каждый запрос будет выделяться процесс. А т.к. у нас у каждого процесса вечный цикл со слипом, то эти процессы не завершаться никогда, если только по превышении max_execution_time (если он не равен 0) или connection_aborted (прописано внутри while, в примере). Так что будет, сколько активных клиентов столько и копий процессов. Что ж тут не сходится-то? nginx магии не делает, а fpm именно так и работает - выделяет из пула процесс под запрос.

    • @user-so6bg4ss5h
      @user-so6bg4ss5h Рік тому

      @@DeadlockFree там есть ограничение на максимальное количество процессов

    • @DeadlockFree
      @DeadlockFree Рік тому

      ​@@user-so6bg4ss5h ​да, но суть не меняет. И ситуацию не улучшает, скорей наоброт, т.к сервер попросту не сможет обслуживать новых клиентов. Он упрется в это ограничение и, вероятно, довольно быстро. Так что это на столько кривой костыль, что крайне не рекомендовал бы к использованию (метод while/sleep).

  • @voodooman08
    @voodooman08 Рік тому

    But is it blazingly fast?) (c) Rust jokes

  • @dx8026
    @dx8026 Рік тому +1

    Да блин о каких преимуществах идёт речь, NodeJS(микро сервисы), PHP(полномасштабные проекты).
    Я не имею ввиду что на NodeJS нельзя реализовать очень большие проекты, просто это лишено смысла исходя из удобства того же PHP, Python....
    Как применить NodeJS взять express и написать код))))

    • @user-cx8kh4sb2i
      @user-cx8kh4sb2i Рік тому +1

      а что на пхп нельзя микросервисы писать?

    • @failj3847
      @failj3847 Рік тому

      @@user-cx8kh4sb2i можно, но на node удобнее

  • @andrewyo3374
    @andrewyo3374 Рік тому +2

    А что кто-то еще пишет на php? :)

    • @tordok7158
      @tordok7158 Рік тому +1

      Ну да

    • @Kiko-fm7zl
      @Kiko-fm7zl Рік тому +1

      конечно

    • @andreyvoskresenskiy2284
      @andreyvoskresenskiy2284 9 місяців тому

      Для тех кто в секте свидетелей похорон PHP :). Вышла новая версия PHP 8.2, очень популярный фреймворк Laravel каждые полгода выпускает обновления, Symfony для приверженцев архитектурных паттернов по-прежнему живой и широко используется, Slim для тех кто делает микросервисы, Swoole для тех кто не может жить без асинхронности. Грамотные менеджеры проектов избегают неоправданных зоопарков технологий и там где возможно обходятся одним языком и это в значительной части PHP.

  • @nickfornit60
    @nickfornit60 Рік тому

    Как можно сравнивать бульдога с носорогом? клиентский язык и серверный? какой только хрени не услышишь от "программистов"

  • @nomadirl3380
    @nomadirl3380 Рік тому +6

    Это уже устаревшие Г., попробовали и забыли. Сейчас в ходу Го и тот же PHP, а Node.js остался просто забытым Легаси, с него наоборот уходят

    • @mirvin11
      @mirvin11 2 місяці тому

      Откуда же у вас такое мнение? Сейчас js на бэке с новыми рантаймами вообще новое дыхание получил.

  • @rondo1568
    @rondo1568 Рік тому

    Здравствуйте Дмитрий!!! Как с вами связаться? У меня к вам есть личный вопрос.

  • @radikovichkz2470
    @radikovichkz2470 Рік тому

    Node js подходит для микросервисов и чатов. Php выдерживает и по 10 млн запросов в сутки здесь уже от сервера зависит. Скажите есть что то подобное в node js типа надежного symfony laravel wordrpress которые поднимается за 2 часа со всеми нужными библиотеками, а что насчет ооп . А что будете делать если процесс node упадёт ) php с ошибкой но отдаст контент. Уважаемый для каждой задачи свой инструмент , лучше не стоит нести чушь. Node придуман для фронтендеров там и останется.

  • @IshchenkoVitaliy
    @IshchenkoVitaliy Рік тому +7

    Насчет того что нужно развиваться постепенно полностью с тобой согласен. Это твоя сильная сторона - разжевывать без лишних усложнений. Спасибо тебе за твой труд.

    • @dimovich85
      @dimovich85 Рік тому +1

      Хелло) согласен