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
Насчет того что нужно развиваться постепенно полностью с тобой согласен. Это твоя сильная сторона - разжевывать без лишних усложнений. Спасибо тебе за твой труд.
Мне очень нравится этот преподаватель. Так держать Дмитрий
Однозначно, преподаватель он замечательный
На 09:40 упоминается Swoole, который как раз абсолютно то же самое позволяет реализовывать. Было выдвинуто предположение что на основе микрослипов. Ровно с таким же успехом можно предположить, что и node.js это делает на микрослипах. Модули php не основываются на языке php, не ограничиваются его синтаксисом, ограничениями и т.п., они пишутся как правило на C или C++ и наоборот расширяют возможности базового ПХП. Ну и вот видимо, Swoole хороший тому пример, в рамках рассмотренной задачи.
Отличный пример, спасибо.
Дмитрий, вы слукавили, данная задача решается на PHP при помощи сокета, селекта и генератора. Получается полностью идентичный функционал, асинхронно в один поток, без использования дополнительных экземпляров скрипта для каждого клиента.
Природа php настолько же синхронна насколько и синхронна природа js. Если говорить про EventLoop то он является отдельным модулем написанным на С++ (lib-uv) в случае node js. Как и swoole является отдельным модулем написанным на С++. Если уж говорить про платформу то более честным сравнением будет node и swoole + php или же amphp в котором между прочим в качестве одного из драйверов eventloop выступает libuv, тот же что и в node. Конкретно в данном случае для ноды eventloop идёт из коробки что конечно удобне в случае когда хочется получить результат быстрее чем ставить отдельные модули. Но опять же сравнение не корректное так как автор говорит о преимуществах ноды из 2013, на сегодняшний день не так просто найти серверный язык который не умеет в асинхронную обработку.
Благодарю Дмитрия за качественный материал с изучения которого невозможно соскочить
Отличная подача!!! Все супер понятно! Спасибо большое!
2 Дня мучался с тем как заставить ноду заработать)))
Спасибо за видео)
отличный инструмент в помощь php бекенду
Специалист становится профессиональным инженером тогда, когда перестает чмырить труд других специалистов...
я сам долго выбирал стек. Смотрел в сторону php, node.js, python и др.
и именно то, что можно легко разместить, определило выбор в сторону php.
потому что node.js это надо vps, либо heroku
a php на любом сервере есть
Когда что-то серьезное на пыхе, тоже лучше vps
в смысле на любом сервере- то есть сделаешь простейший апи сервер для фронта -загрузишь это на тот же vercel или netlify и будет работать ? на ноде сервера не пишу, пишут их на экспресе или на несте ) на ноде приложения пишу а ля вебпак например )
@@sharkman6434 А экспресс и нест на чём написаны?
Преодолеть природу легко - используйте ReactPhp. Запустите сервер как процесс и обрабатывайте запросы аналогично ноду... Странно многие не знают современный php может работать как в синхронном так и в асинхроннм режиме. Вы можете так же использовать промисы и async. На node это легче и быстрей.
Так и на питоне вроде как давно уже можно. Видео только начал смотреть, поэтому мнения по ноде пока нет.
Ну Swoole фактически делает из пыха нод жс, в том числе и асинхронность.
Дмитрий, Вы самый интересный рассказчик в айти. Серьезно, я не знаю никого красноречивее, просто тупо приятно слушать, а главное все понятно. Нов видео совершенно никаких таких доводов к изучению ноды нет. По сути это прослойка между клиентом и php-сервером, для работы с сокетами. Но дело в том, чтобы работать по такой схеме, учить ноду не нужно вообще, достаточно установить пакет с вебсокет-сервером из npm, настроить за две минуты по мануалу и больше ноду изнутри не трогать годами, крутится и крутится. Я так понимаю что ниша не поменяется: монолит - php \ .net, микросервисы - go, вебсокеты - нода
Дмитрий, здравствуйте. Хотелось бы узнать а вы SmartGrid поддерживаете еще? Просто на гитхабе смотрю вам еще с июля отправили пулреквест на использование math.div в sass билде. а то я вот ща познакомился с ним и мне понравилось. Да только вот деприкейты глаза мазолят)
Я обязательно куплю курс у этого парня!
А из PHP разве нельзя своего демона делать, который тоже самое будет делать? Знаю, что можно из PHP запускать дочерние процессы. Даже как-то делал такое, но из-за systemd выкинул эту ненужную мне штуку и стал запускать просто несколько процессов (это просто было компоненты демона, которые занимались разными делами, получали данные из порта, обрабатывали и отправляли POST запросом на веб-сервер). Ну и тот же Redis использовать для передачи событий к демону.
Можно
Не подумайте, что реклама, но на Бегете в стандартном хостинге есть поддержка Ноде.ЖС на которой я сделал сайт.
Реализовали они Нод через Докер и не надо мучить мозг и что то там арендовать дополнительное и настраивать свой сервер.
Да…
Но работает он там довольно спорно. Лучше билдить всё в локальном гитлабе, а ставить всё уже на любом шареде без сборки
а ролик крутой, лайк!
так а что, PHP не умеет в асинхрон? или sleep() в асинхронном выполнении работает также?
(я 1Сник)
Php рожден чтобы умирать, а чтобы сделать его работающим процессом достаточно связать с roadrunner. Не стоило автору сравнивать с node js абсолютно разные инструменты
Дмитрий не только отличный преподаватель, но и психолог. Умеет преподать сложную информацию в таком ключе, чтобы человек не соскочил с её изучения при первом знакомстве. Курс не имеет аналогов
Без слипов прекрасно работает Amphp. У него под капотом ивентлуп по типу js-кого и если правильно писать, то нет и блокировок. Но, в плане расширяемости и комьюнити он сильно проигрывает ноду и бесчисленному количеству фреймворков и библиотек
Хорошо бы в перспективе сделать курс linux-а для вэб-разработчиков
Согласен по поводу развития постепенно, для начала надо было пробросить порты через маршрутизатор в интернет и сделать из своего ПК хост, без использования платных хостингов, где слишком много геморроя было показано, а запуск сервера через консоль, это эпик =) на PHP закинул и всё работает без танцев с бубном. Начали с того, чем лучше, а закончили тем, чем хуже =)
каждая технология хороша для своих задач.
мощь!
когда же вы перейдете уже на линуксе
для новичка пощупать ноду надо выкинуть 2к денег, при том ему вряд ли надо писать онлайн чятики и прочее, ему статику для начала припилить на хтмл + чуть жс, что хватает примерно 200 рублей аренда хостинга с доменом на пол года, там же и пых и мускул
Я конечно пишу на NodeJS, но очень удивился о возможностях PHP. Вдруг вы тоже об этом не знали. Не смотря на то что PHP однопоточный и не асинхронный, при блокировке потока каким то долгим скриптом PHP продолжает работать у других как будто создается для каждого пользователя отдельный поток.
Дядь, изучи вопрос, не пиши ерунду. Изначально под каждый запрос пользователя создаётся отдельный процесс, грубо говоря php.exe. Таким образом все пользователи работают в своих процессах, они не мешают друг другу. Недостаток в том что каждый раз приходится с нуля прогружать программу-интерпретатор php.exe, со всеми конфигами, глобальными переменными и т.д. Также интерпретатор php.exe можно расширять как угодно, если написать к нему модули на языке С. На этом построены различные приблуды на подобие reactPHP, Swoole и прочих, которые могут "переопределить" стандартное поведение php создавать новые php.exe процессы под каждого пользователя... (Это если коротко).
А вообще это всё костыли, php морально устарел, есть "языки" которые из коробки работают как того требует здравый смысл (Node.js к ним кстати не относится, это тоже Франкенштейн из говна и палок для умственно отсталых JS-кодеров)
@@nomadirl3380 Не понимаю где ты тут увидел ерунду, и к чему ты это вообще написал. Предположу, чтобы самоутвердиться. Я поясню, что в моем комментрий отсутствует какое либо утверждение и подметил это сугубо из своего опыта словом "как будто", что в принципе моим комментарием и так понятно о чём идёт речь. А ещё зачем то продолжил про ноду и обосрал комьюнити JS с пхп. Одним словом🤡
@@nomadirl3380 лол))) прочитай про fastcgi и php-fpm. php использует только один процесс с конфигом, глоб. переменными и т.д., а дальше php работает как cgi скрипт.
php морально устарел? лол))) php это лидирующий язык в мире веб. А кто конкуренты? нод? еще в 15 году обещали, что нод обгонит пхп по всем направлениям, но что-то так и не обогнал. питон? вакансий на питоне для веб прогеров в разы меньше, чем на пхп.
пхп простой, удобный и может решать 97% любых задач, которые надо в вебе. асинхронность решается очередями для большинства задач так же хватает. нужно что-то более быстрое? микросервисы на го в помощь. короч дичь полнейшую ты написал.
@@user-cx8kh4sb2i спасибо за знания
@@user-cx8kh4sb2i php лидирующий в мире веб? У тебя мир веб - это интернет магазины на вордпресс?
возможно ошибаюсь. Не спец в ноде. Но по мне ее главное преимущество один язык на сервере и клиенте. Что для кого то может быть большим плюсом. А в остальном в сравнении с развитыми серверными ЯП преимуществ нет. Поэтому и решил глянуть этот ролик для прояснения темы. Но автор не особо в теме
Нода хороша для задач связанных с вводом/выводом (чат, боты, рендеринг страниц), также, неплохая для не больших/средних систем ибо относительно проста, постоянно развивается, есть годные фреймворки (тот же Nest, Adonis).
P.S про один язык на сервере и на фронтенде - очень спорный плюс. Да, язык то один, но практики на бекенде и на фронтенде очень отличаются, и все равно фронтендеру прийдется доучиваться чтобы писать бек на ноде (базы данных, линукс, REST, TypeScript ибо на ноде Ts - это как стандарт почти)
@@user-sp1vi7fg2uввод вывод намного лучше писать на многопоточном языке, ибо при rpc 100к и больше эвент луп просто умрёт
а можно установить nodejs без ngnix
Так и да, где тесты, где хоть какое-нибудь сравнение? Где инфа про JIT, который хреново реализован до сих пор в JS, но нормально реализован в PHP? Я не хейтер, просто непонятно откуда инфа, исключительно интересуюсь
А что не так с JIT на ноде? Движок V8 вроде как не дубы делали, да и по факту она очень даже шустро работает (умники всякие любят сравнивать какой-нибудь дотнет в 12 потоков против ноды в один поток и говорить что C# в 5 раз быстрее, но если те же тесты прогнать на ноде в кластерном режиме, оказывается что на самом деле производительность +/- однояйцевая ) -тоже чисто интересуюсь.
"Раздает ответ по интервалу, а не тогда, когда новые данные появились"
Как из php скрипта передать эти данные в node?
как вариант Redis, по-моему автор в видео это где-то упоминал
А джанго как поживает?
Многопоточность в node?
Есть со времен одной из обнов, но в основном просто в кластерном режиме несколько процессов запускают и не парятся.
не досмотрел до конца но я для хоста юзаю nginx => reverse proxy => pm2 что бы мониторить сам процеесс
А golang не подвинет сильно РНР и nodejs??
Go и Rust для микросервисов отлично подходят, тут проблема в том, что специалистов на эти языки программирования не так много, они не мейнстримовые.
@@DreamingDolphing растёт популярность
Всему свое время, Rust завоюет свою нишу, и на нашей улице будет праздник
node открывает путь во full-stack develop для фронтендера
очередной чудо эксперт. Чье гугление вопроса ограничено 2 первыми ссылками. А что мешает использовать сокеты или reactPHP ?
+++++++++++++ 👍👍👍👍👍👍
обожаю express js))
"Наверное этот дядя смог преодолеть природу РНР" - К слову о выборе инструмента под задачу)
php работает через nginx и fpm, никаких 100 процессов index.php не будет
это еще почему-же? Под каждый запрос будет выделяться процесс. А т.к. у нас у каждого процесса вечный цикл со слипом, то эти процессы не завершаться никогда, если только по превышении max_execution_time (если он не равен 0) или connection_aborted (прописано внутри while, в примере). Так что будет, сколько активных клиентов столько и копий процессов. Что ж тут не сходится-то? nginx магии не делает, а fpm именно так и работает - выделяет из пула процесс под запрос.
@@DeadlockFree там есть ограничение на максимальное количество процессов
@@user-so6bg4ss5h да, но суть не меняет. И ситуацию не улучшает, скорей наоброт, т.к сервер попросту не сможет обслуживать новых клиентов. Он упрется в это ограничение и, вероятно, довольно быстро. Так что это на столько кривой костыль, что крайне не рекомендовал бы к использованию (метод while/sleep).
But is it blazingly fast?) (c) Rust jokes
Да блин о каких преимуществах идёт речь, NodeJS(микро сервисы), PHP(полномасштабные проекты).
Я не имею ввиду что на NodeJS нельзя реализовать очень большие проекты, просто это лишено смысла исходя из удобства того же PHP, Python....
Как применить NodeJS взять express и написать код))))
а что на пхп нельзя микросервисы писать?
@@user-cx8kh4sb2i можно, но на node удобнее
А что кто-то еще пишет на php? :)
Ну да
конечно
Для тех кто в секте свидетелей похорон PHP :). Вышла новая версия PHP 8.2, очень популярный фреймворк Laravel каждые полгода выпускает обновления, Symfony для приверженцев архитектурных паттернов по-прежнему живой и широко используется, Slim для тех кто делает микросервисы, Swoole для тех кто не может жить без асинхронности. Грамотные менеджеры проектов избегают неоправданных зоопарков технологий и там где возможно обходятся одним языком и это в значительной части PHP.
Как можно сравнивать бульдога с носорогом? клиентский язык и серверный? какой только хрени не услышишь от "программистов"
Это уже устаревшие Г., попробовали и забыли. Сейчас в ходу Го и тот же PHP, а Node.js остался просто забытым Легаси, с него наоборот уходят
Откуда же у вас такое мнение? Сейчас js на бэке с новыми рантаймами вообще новое дыхание получил.
Здравствуйте Дмитрий!!! Как с вами связаться? У меня к вам есть личный вопрос.
Node js подходит для микросервисов и чатов. Php выдерживает и по 10 млн запросов в сутки здесь уже от сервера зависит. Скажите есть что то подобное в node js типа надежного symfony laravel wordrpress которые поднимается за 2 часа со всеми нужными библиотеками, а что насчет ооп . А что будете делать если процесс node упадёт ) php с ошибкой но отдаст контент. Уважаемый для каждой задачи свой инструмент , лучше не стоит нести чушь. Node придуман для фронтендеров там и останется.
Насчет того что нужно развиваться постепенно полностью с тобой согласен. Это твоя сильная сторона - разжевывать без лишних усложнений. Спасибо тебе за твой труд.
Хелло) согласен