JavaScript vs PHP. Что лучше для сервера? Детальный анализ (JS vs PHP | PHP vs JS)

Поділитися
Вставка
  • Опубліковано 10 кві 2020
  • PHP все ругают. Те кто пишут на PHP не хотят писать на чем либо другом. Этот парадокс я попытался объяснить в этом видео.
    Чтобы понять чем PHP такой особенный, нужно понять как код отрабатывает на сервере по сравнению с другими языками. В этом видео в качестве другого языка выступает JavaScript.
    В видео затронуты такие темы, как ассинхронная обработка процессов в Linux и важность правильной инициализации framework для php.
    Также я рассмотрел вариант архитектуры PHP приложения, возможно удивит тот момент, что там есть место для NodeJS
    Я готовился к этому видео 4ре года :) всегда задавался вопросом почему PHP еще не умер и все дела. Буду рад если досмотришь до конца видео и поделишься мнением в комментариях.
    Презентация: docs.google.com/presentation/...
    keywords:
    js vs php
    php vs js
    JavaScript vs PHP
    PHP vs JavaScript

КОМЕНТАРІ • 64

  • @AlexBell_86
    @AlexBell_86 3 роки тому +7

    Почему у этого видео так мало лайков?
    Отличное видео. С удовольствием бы посмотрел подобные видео о других языках.

  • @derek_james
    @derek_james 2 роки тому +2

    Спасибо за детальный обзор! Для полной картины этого не хватало!)

  • @alexaxenov974
    @alexaxenov974 2 роки тому +2

    Вы реально большой молодец в интернете очень не много таких толковых сравнений)

  • @BiBo8672
    @BiBo8672 4 роки тому +3

    Спасибо огромное, просто и доступно, в самую точку!

  • @user-ek5kv2hb5d
    @user-ek5kv2hb5d 3 роки тому +3

    Спасибо большое! Многое стало на свои места!

  • @ilnurryazhapov9377
    @ilnurryazhapov9377 4 роки тому +3

    Топ контент, прям удивил!

  • @ilyakozel5472
    @ilyakozel5472 2 роки тому +1

    Спасибо за проделанную работу.

  • @user-lu8kp9pm5m
    @user-lu8kp9pm5m 11 місяців тому +1

    Видео имба все достаточно понятно. Спасибо!

  • @Hayabusa17
    @Hayabusa17 2 роки тому +3

    человеческое спасибо Вам

  • @grommaks
    @grommaks  4 роки тому +3

    Приятного просмотра :)
    Если остались вопросы, задавай!)
    Если есть пожелания к видео, кидай в коментарий!)
    Хорошего тебе настроения ;)

  • @donbotdonbot2522
    @donbotdonbot2522 4 роки тому +1

    Спасибо супер!

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

    супер, спасибо

  • @user-ik7rp8qz5g
    @user-ik7rp8qz5g 5 місяців тому +2

    Нодовские сервера обычно тоже работают за реверс прокси на каком-нибудь абстрактном порте 3000. Я ни разу не встречал нодовский сервер, который напрямую слушает 80/443.
    По производительности - на момент 2023-2024 уже состоялся релиз bun, который в чистой производительности обходит php. Там есть вопросы к совместимости, но улучшения постоянно ведутся, баги фиксятся.
    По cms - есть много нодовских. Payload, directus, strapi, sanity - вот только несколько, которые у всех на слуху. Отличительная особенность - headless формат. Они обычно не генерируют итоговый контент, а дают админский интерфейс и api прослойку между базой данных и фронтом (или отдельным бэком).
    По генерации html - есть много фреймворков, которые этим и занимаются. Они помимо клиенского и серверного рендеринга еще часто поддерживают статическую генерацию - подготавливают страницу один раз во время сборки и дальше отправляют обычный html (или в другом виде уже заранее готовые данные) на каждый запрос. Для блогов, где из 100 страниц за все время существования обновляется только одна со списком статей, да и та раз в неделю при добавлении новой статьи, это намного эффективнее, чем на каждый запрос генерировать одну и ту же страницу в реальном времени.
    Возможность обновить приложение простым добавлением новых файлов в папку на сервере - очень большое премущество php. Нодовские сервера могут тратить по несколько минут на повторную сборку и запуск приложения.
    В дополнение к тому, что озвучено в видео, разработка на ноде - это всегда работа с одним языком. Разработчикам не нужно переключаться между контекстом разных языков, чтобы в моменте поменять какой-то интерфейс на фронте/бэке и вернуться обратно к основной задаче, где этот интерфейс требовался. Можно переиспользовать один и тот же код (чистые функции, конечно же) на сервере и на клиенте. Типизация данных распространяется сразу на весь проект - клиент знает, что отправит сервер, сервер знает, что ждет клиент, нет необходимости переопределять одни и те же типы.

    • @grommaks
      @grommaks  5 місяців тому +1

      Отличный коммент 😊
      То что язык одни это правда хорошо, но бекенд и фронтенд сильно отличаются, не всегда это легче чем работать с двумя языками
      Типы вроде тоже можно переиспользовать, но бывает ОРМ имеет типы которые нельзя нормально использовать на фронте, плюс реквест / респонс могут иметь контекст фреймворка, тут нужен опыт
      Есть open api generator который может сгенерировать типы из свагера, и также свагер может быть сгенерирован из любого языка, не сильно усложняет проблему общих типов
      Давно еще мы поднимали ноду с использованием forever, а ngnx проксировал вызовы , разумеется это для простых задач, типа чата или вебсокетов когда php плохо умел это делать, но все меняется и развивается
      Проблема js в том что он везде, и не всегда он хорош там где он есть, php исключительно для веба, есть четкие задачи которые решаются на php и еще много лет будут решаться на php в основном
      Js без TS это больно :)
      Но в целом я работаю на TS и меня полностью устраивают возможности, я доволен

  • @exmocker
    @exmocker 2 роки тому +2

    Очень хороший контент, спасибо за работу! Вопрос от себя - если я хочу допустим портал со специализацией на видеостриминге + статичных видео + интеграции рекламы + онлайн-чате, комментах и т.п. - то это почти 100% JS? А если расширенный большой каталог с маленьким количеством действий и почти без логики - PHP?

    • @grommaks
      @grommaks  2 роки тому +1

      Скажем 100% не php, но существуют гибридные решения где логика распределена между двумя языками программирования.
      PHP сайты делаются с логикой, и часто с очень сложной, но главное чтобы все вычисления происходили на одном сервер с минимальным числом блокирующих запросов
      Пример сайт знакомств баду, там из 200 серверов, лишь 11 серверов требовали замены с php на другой язык (в их случае это был go lang)
      В остальных сценариях php работает стабильно и не требует замены на другие «оптимальные языки программирования»

    • @exmocker
      @exmocker 2 роки тому

      @@grommaks спасибо большое за быстрый ответ. Вы лично в первом случае что бы выбрали?

    • @grommaks
      @grommaks  2 роки тому +1

      ​@@exmocker я бы брал PHP для блогов (100%), магазинов (100%) и enterprise систем (тут laravel или симфони по желанию, но есть еще Java, C#).
      В первом случае взял бы JS, это оптимально для того типа проекта. Но я бы взял бы что-то с типизацией на TS. Например nestjs или в обычный express подкрутил бы TypeScript
      Конкурентов PHP в разработке магазинов я пока не вижу на рынке WEB технологий, у PHP более 6 фреймворков которые уже десятки лет развиваются только для магазинов.
      Блоги из-за своей гибкости и сео требований тоже пока 100% под PHP находятся, за счет WP и других CMS систем...все остальное делается на любом языке, но PHP имеет проблему с большим количеством блокирующих запросов, но в PHP8+ много решений которые устранят и эти недостатки...но пока это все заедет во фреймворки пройдет еще год или два

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

    Подскажите что бы создать себе лично 1-2 сайта с не большим асортиментом для продаж товара, учить хтсл,js-для фронта и php-для бека или лучше слышал c#,.net-лучше
    Или еще какие варианты?

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

      Лучше всего в вашем случае php и воспользоваться одной из готовых платформ для магазинов
      Wordpress (+woocommerce) или OpenCart

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

      @@grommaks спасибо

  • @virnus1
    @virnus1 Місяць тому +2

    Вроде как фронтендерам как не крути нужно немного разбираться в Ноде, а в целом фуллстак это миф или реальность, хоть где то есть реально работающие фуллстекеры на JS?

    • @grommaks
      @grommaks  Місяць тому

      Конечно есть, но мой стек был PHP, так что это не обо мне :)

  • @maksimsergeevich5939
    @maksimsergeevich5939 3 роки тому +1

    Спасибо! Хороший обзор

    • @maksimsergeevich5939
      @maksimsergeevich5939 3 роки тому +1

      Макс, а можешь подсказать по моей ситуации:
      Я хочу сделать сервис, это будет сайт с базой клубов и ресторанов, с функционалом: - поиск с фильтрацией, постраничный вывод, личный кабинет админа сайта и личный кабинет админа заведения (для добавления своих заведений и редактирования страницы). Я так понимаю тут это будут обычные CRUD операции. Но я еще хотел бы после релиза сайта сделать мобильное приложение, потому, что у него еще дополнительный функционал будет, отличающийся от сайта. Получается я уже этот сервис должен как REST API сделать. Так вот, для сервиса который делает вычисления по бизнес логике, а потом выплевывает JSON в соответствии с запросом, ну и отдает статику, есть вообще разница, что я использую, PHP или Node.js?

    • @grommaks
      @grommaks  3 роки тому +1

      Список клубов это контент сайта для поиска через google?
      Тут нужен рендеринг на стороне сервера.
      Я бы сделал все endpoints на REST иди GraphQL. На backend это выглядит как REST или GraphQL обращается к сервису за получением данных. Т.е. этими сервисами можно пользоваться в любом другом участке кода...даже если сервер будет генерить HTML или контент письма, то сервер сможет обращаться к тем же сервисам
      При наличии такой API допилить мобильное приложение будет не проблема. Для мобилы круче будет GraphQL чтобы не тянуть те данные которые не рисуются, и не замедлять работу приложения из-за большого обмена данными.
      На Node JS делать или на PHP разницы нет, и там и там все есть из коробки и легко настраивается.
      Я бы взял Laravel в случае PHP
      или NestJS (осторожно TypeScript) в случае NodeJS
      Тут есть ряд плюсов и мнусов одно и второго выбора
      1) PHP немного дешевле чем NodeJS
      2) PHP сервера легче и дешевле купить
      3) При большом количестве запросов на сервер (больше 100 000 в минуту) то для PHP нужно покупать новый сервер...нода может показывать себя более стабильно при таких нагрузках. Но это не проблема в принципе
      4) PHP это OOP решение, при наличии сложной логике, то PHP выигрывает. Но все зависит от квалификации разработчиков конечно же..
      5) Node JS расширяется за счет микросерверов, тут PHP наглухо проиграет...но ничто не мешает их комбинировать :)

    • @maksimsergeevich5939
      @maksimsergeevich5939 3 роки тому +1

      @@grommaks Спасибо большое! Вообще сайт делается не с акцентом поиска через Гугл. Я хочу именно клубный сервис сделать. Сайт каталог это, как бы, фундамент этого сервиса, основа, на которую будут накатываться фичи. Просто все фичи будут так или иначе предоставлять какие либо возможности, в отношении заведений. Так что да, сам каталог это просто основа с которой я хочу начать.
      И 1600 RPS это сравнимо с каким существующим ресурсом? Сайт доставки суши по городу или Авито? Мне кажется 1600 rps, это не мало

    • @grommaks
      @grommaks  3 роки тому +1

      @@maksimsergeevich5939 medium.com/@taylorotwell/benchmarking-laravel-symfony-zend-2c01c2b270f8
      Аот сам тейлор сравнивает php фреймворки...600 rps это норм для php...1600 могут быть проблемы с железом из статьи. Там или 3 таких серва или помощнее этот. Еще нужно чтобы бд потянула...думаю постгресс легко потянет эти задачи
      Если данные не транзакционные то монга будет тоже отличный выбор

    • @maksimsergeevich5939
      @maksimsergeevich5939 3 роки тому +1

      @@grommaks Да не, я не оспаривал возможности. Я в прямом смысле хотел понять какого размера должен быть сервис чтобы было 1600 рпс. Насколько это много или мало короче) Допустим если это инет магазин.

  • @valerakuznetsov
    @valerakuznetsov 5 місяців тому +1

    Спасибо

  • @suleymanaliev1459
    @suleymanaliev1459 4 роки тому +1

    Привет дружище, как с тобой связаться? Есть ряд вопросов по js and php не касающей данной темы.

    • @grommaks
      @grommaks  4 роки тому

      На канале есть ссылка, по ней можно вступить в группу :)

  • @user-wq6jk2yj2v
    @user-wq6jk2yj2v 2 роки тому +1

    Насчет реалтайма в php посмотрите swoole, который обгоняет по тестам node.js, или paralle библиотека которая вообще поддерживает многопоточность (не знаю вообще может ли js поддерживать многопоточность), или близко по синтаксису и асинхронное выполнение как js библиотека - reactphp

    • @grommaks
      @grommaks  2 роки тому

      Спасибо, нужно бы посмотреть)
      Кроме производительности есть еще такие критерии
      - надежность
      - простота
      - масштабируемость
      - расширяемость
      - наличие готовой экспертизы на рынке (не всякий PHP разработчик может писать непрерывный процесс без утечек памяти)

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

    Писал на Symfony, потом перешел на nest js. Не заметил никаких проблем. Даже наоборот, typescript больше нравится, и на фронте он же (angular). Я думаю PHP для нового проекта - это или CMS или какой нибудь лютый хайлоад где эта разница в скорости будет заметна. После тайпскрипта на PHP совсем не хочется ничего делать, уж больно синтаксис у него извращенный)

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

      PHP доминирует на рынке блогов и интернет магазинов, для приложений с нуля для маленького числа пользователей не важно что брать, все будет работать хорошо :)

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

    Так php же вроде не запускает процесс на каждое новое соединение, при использовании php-fpm есть пул предзапущенных процессов, а соединения обрабатываются в потоках этих процессов

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

      Верно, видео не полное получилось, спасибо за дополнение
      Php-fpm я во всех приложениях использовал, можно считать что не только я. Но мы можем настроить сколько процессов держать на постоянной основе и сколько генерировать динамически (по той логике что я в этом видео рассказывал)

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

      @@grommaks не за что, всё равно видео отличное)

  • @donbotdonbot2522
    @donbotdonbot2522 4 роки тому +1

    Спасибо, на всем пространстве рунета нету внятного и разжеванного обяснения 1)про окружение php(я пользуюсь LAMP и не знаю другого и не понимаю для чего другое) 2) про композер 3)книги для новичков(везде копируют друг у друга инфу).

    • @grommaks
      @grommaks  4 роки тому +1

      Уроки по php планирую делать, но после angular и nestjs 😃

  • @user-mirninec
    @user-mirninec 3 роки тому +1

    nginx написан на чистом Си (не C++)

  • @6598335
    @6598335 4 роки тому +4

    Жаль, что сравниваются только PHP и JS. Интересно было бы ещё Python3 (хотя бы) и Java посмотреть в сравнении с ними.

    • @grommaks
      @grommaks  4 роки тому

      Спасибо за отзыв, но пока не могу обещать такого, ни Python ни Java в руках не держал ;)

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

    Бэк который поднят на ноде, чаще всего работает на nginx

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

      Что происходит на сервере не всегда касается разработчиков, чаще всего техлидов или девопсов
      Локально до недавнего времени PHP нельзя было поднять на PHP
      Но большинство не фреймворков на PHP все еще не получится подняь без сервера, в свою очередь проекты на ноде чаще всего не требуют доп инструментов кроме самой ноды

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

    Nginx/Apache написан на C , Java тут не причём.

  • @NikK0lay
    @NikK0lay 9 місяців тому +1

    А самом начале немного бред. С node js так же если использовать nginx всё работает так же. И страдает один процесс

  • @PoulFly
    @PoulFly 4 роки тому +4

    Https 443

  • @NikK0lay
    @NikK0lay 9 місяців тому +1

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

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

      Понятно что можно, и можно написать хорошо
      1 вакансий с такими знаниями практически нет
      2 если говорим про версию 8+ то там много чего добавили и пытаются часть слабых мест закрыть

  • @user-ec4ht8qk6h
    @user-ec4ht8qk6h 3 роки тому +4

    Те кто говорит что PHP скоро умрет, покажите мне хоть одну CMS, которая работает на NodeJS? PHP просто идеально подходит для CMS, сейчас конкурентов по CMS для него нет и не предвидится. Почти все сайты малого и среднего бизнеса написаны на PHP.

    • @katacode
      @katacode 2 роки тому

      Ленин жив, Цой жив, Delphi жив, PHP жив! :)

  • @NikK0lay
    @NikK0lay 9 місяців тому +1

    Автор немного не в теме, изучил открытые данные. Но в саму суть так и не вник. Немного водит в заблуждение

    • @grommaks
      @grommaks  9 місяців тому +1

      Быть экспертом во всем невозможно) на момент записи видео 5 лет опыта работы с php было и несколько лет из них работал техлидом
      Но сценарий видео я не прописывал, на ходу мог неправильные формулировки использовать, и как правило речь шла про php версия 7.0-7.3