Свой путь в сфере разработки я начала с языка PHP, но позднее в индустрии программирования акцент сместился в сторону JavaScript. Отчасти причина в том, что фронтенд-составляющая веб-среды так или иначе работает именно на JS. В этой сфере я провела последние десять лет.

Недавно мне подвернулась кое-какая работа, связанная с PHP. Поначалу я была удивлена, ведь за этим языком закрепилась дурная слава – преимущественно из-за его ассоциирования с устаревшими проектами WordPress (и всеми вытекающими из этого уязвимостями). Но WordPress – это всё же не PHP.

В общем мне стало любопытно. Кто они – те люди, которые до сих пор используют PHP? Почему они это делают? И как этот опыт можно сравнить с моим скромным миром серверных проектов на JS?


Грозит ли PHP скорое вымирание?

Эволюция PHP и его текущее положение в мире


Язык PHP, который изначально подразумевал «Personal Home Page» (личная домашняя страница), а теперь трактуется как «PHP: Hypertext Preprocessor» (PHP: препроцессор гипертекста), был разработан в 1994 году Расмусом Лердорфом. Поначалу он представлял собой простой набор скриптов Perl для поддержания личной страницы Лердорфа. Со временем же PHP вырос в полнофункциональный скриптовый язык, ставший основой миллионов сайтов по всему миру.

С момента своего появления PHP прошёл несколько значительных этапов развития:

  • PHP 3 (1998): с этим релизом, благодаря сотрудничеству Лердорфа с двумя израильскими разработчиками – Зеевом Сураски и Энди Гутмансом – язык обрёл более надёжную скриптовую форму.
  • PHP 4 (2000): в этой версии был внедрён механизм Zend Engine, скриптовый движок, который повысил производительность PHP и сделал его более расширяемым.
  • PHP 5 (2004): этот релиз привнёс значительные доработки, включая поддержку объектно-ориентированного программирования (ООП), которое позволило разработчикам создавать более организованный и удобный в обслуживании код.
  • PHP 7 (2015): ввиду определённых внутренних сложностей в команде разработки версия PHP 6 была пропущена. Что же касается PHP 7, то она обеспечила значительный прирост производительности, а также предложила ряд новых функций, таких как оператор трёхстороннего сравнения и оператор объединения с неопределённым значением. Помимо этого, в ней была реализована более строгая система типизации и обработки ошибок.
  • PHP 8 (2020): это последний старший релиз, в котором было добавлено несколько новых функций и оптимизаций, о которых я расскажу далее.

За время своего существования PHP впитал множество современных практик написания кода, что сделало его более гибким и податливым для разработчиков языком. Поворотным моментом стало внедрение в PHP 5 принципов ООП, что позволило создавать более обслуживаемый и переиспользуемый код.

Ещё одним значительным улучшением стало внедрение Composer, менеджера зависимостей, который упростил использование в проектах PHP сторонних библиотек.

Сообщество PHP также утвердило стандартные рекомендации к языку (PSR, PHP Standard Recommendations) с целью продвижения лучших практик и правил написания кода. PSR охватывает различные аспекты разработки, такие как стили программирования, автозагрузка и промежуточное ПО, направленные на обеспечение согласованности и функциональной совместимости проектов PHP.

Текущее состояние PHP


▍ JIT-компилятор


Одной из наиболее выдающихся возможностей PHP 8 является динамический (JIT, just in time) компилятор. Он компилирует программу в машинный код во время выполнения, что способствует значительному повышению быстродействия в определённых видах приложений, таких как вычислительно нагруженные задачи или длительно выполняющиеся скрипты командной строки. И хотя JIT-компилятор не оказывает существенного влияния на скорость работы веб-приложений, он является очередным эволюционным шагом PHP и демонстрирует стремление этого языка к модернизации.

▍ Атрибуты


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

▍ Типы объединения и прочие нововведения


Объединения типов (union types) ставшие ещё одним новшеством в PHP 8, позволяют указывать несколько типов для одной переменной, параметра или возвращаемого значения. Эта функция повышает эффективность подсказок при вводе кода, а также делает его более читаемым и надёжным.

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



Достоинства PHP


Ниже я в сжатой форме перечислила сильные стороны этого языка.

▍ Простота и лёгкость освоения


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

▍ Богатая встроенная функциональность


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

▍ Обширное сообщество и огромное множество ресурсов


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

▍ Множество вариантов хостинга и совместимость


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

▍ Производительные фреймворки


Экосистема PHP включает несколько производительных фреймворков, которые помогают создавать надёжные, масштабируемые и удобные в обслуживании приложения. Такие решения, как Laravel, Symfony и Yii обеспечивают прочную основу для создания веб-приложений, предлагая инструменты и абстракции, которые упрощают задачи вроде маршрутизации, доступа к базам данных и обработки форм. Эти фреймворки также следуют современным практикам программирования и стандартам, помогая разработчикам писать чистый и легко обслуживаемый код.

▍ Непрерывная разработка и поддержка со стороны основной команды PHP


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


Какая у тебя группа крови? Баг-положительная.

Недостатки PHP


Естественно, есть у этого языка и слабые стороны, которые я тоже вкратце опишу.

▍ Проблемы с легаси-кодом и устаревшими практиками


Один из недостатков PHP заключается в проблемах с легаси-кодом и преобладании устаревших практик в долгоживущих проектах. Ввиду своей длительной истории и широкого распространения PHP накопил значительный объём «плохого кода» и устаревших техник, которые присутствуют в легаси-приложениях. Новички в PHP-разработке могут сталкиваться с этими проблемами, которые определённо будут вызывать недовольство и снижать продуктивность.

▍ Безопасность


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

▍ Несогласованность в именовании функций и расстановке параметров


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

▍ Критика производительности в сравнении с более новыми языками


PHP сталкивается с критикой в отношении своей производительности по сравнению с более свежими языками вроде Go и Node.js. Несмотря на то, что быстродействие PHP за время его существования значительно повысилось, особенно с релизом PHP 7 и внедрением JIT-компилятора в PHP 8, в определённых случаях он всё равно отстаёт от более молодых языков. В случае создания приложений, опирающихся на быстродействие, для достижения желаемого результата иногда будет лучше обратиться к альтернативным языкам или технологиям.

▍ Восприятие языка как устаревшего


Наконец, иногда PHP воспринимается как отстающий по своим возможностям в сравнении с современными аналогами и фреймворками. Несмотря на то, что PHP проделал значительные шаги в реализации современных практик программирования и обрёл множество новых возможностей, его репутацию как «старого» языка пошатнуть сложно. Такое восприятие делает его менее привлекательным решением для некоторых разработчиков и нередко приводит к выбору более молодых языков. Тем не менее, как показали предыдущие разделы, PHP остаётся надёжным и гибким решением, которое продолжает развиваться и адаптироваться к потребностям современной веб-разработки.


Юмор на тему программирования

Итак, кто же сегодня использует PHP?


Согласно W3Techs, на май 2023 года PHP используется на 78,9% всех сайтов, язык бэкенда которых известен. Это показывает широкое распространение PHP в сообществе веб-разработки. Более того, он также сохраняет значительную долю на рынке среди серверных языков программирования. Об этом говорит статистика BuiltWith, которая показывает, что PHP используется на более, чем 22 миллионах активных сайтов. Опрос разработчиков, проведённый ресурсом Stack Overflow в 2021 году, также показал, что PHP является восьмым по популярности языком, об использовании которого сообщили 26,2% всех респондентов.

Многие известные компании и сайты в своих серверных потребностях опираются именно на него:

  • Facebook: несмотря на то, что в Facebook разработали собственный производный от PHP язык Hack и среду выполнения HHVM (HipHop Virtual Machine), изначальная инфраструктура этой платформы создавалась на PHP.
  • Wikipedia: эта онлайн-энциклопедия, являющаяся одним из самых посещаемых ресурсов по всему миру, работает на PHP и открытом ПО MediaWiki.
  • Slack: согласно StackShare, PHP является частью технологического стэка Slack и играет важнейшую роль в работе его платформы обмена сообщениями.
  • MailChimp: как отмечается на Quora, бэкенд этого популярного провайдера услуг email-маркетинга работает на PHP.
  • Etsy: согласно данным StackShare, этот электронный маркетплейс по продаже товаров ручной работы и винтажных изделий также реализует свои веб-приложения на PHP.

Помимо этого, PHP широко используется в самых различных индустриях. Например:

  • Системах управления контентом (CMS, Content management systems): как пишут на WPBeginner, PHP лежит в основе популярных систем управления контентом вроде WordPress, Drupal и Joomla, на которых работают миллионы сайтов по всему миру.
  • E-commerce: по информации с Cloudways основанные на PHP платформы вроде Magento, WooCommerce (плагин WordPress) и PrestaShop используются бизнес-проектами различных масштабов для создания онлайн-магазинов.
  • Кастомных веб-приложениях: разработчики используют PHP для создания веб-приложений в различных сферах, простирающихся от здравоохранения и финансов до образования и развлечений. Гибкость и надёжность этого языка делают его популярным выбором для веб-разработки.


NodeJs VS PHP: сравнение показателей, функционала и производительности на 2023 год

Сравнение бэкенд-возможностей PHP и JavaScript


Быстродействие является важнейшим аспектом любого веб-приложения. С релизом 7 и 8 версии PHP проделал значительные шаги в сторону повышения производительности, которые подробно раскрыты на PHP.net. Сегодня быстродействие этого языка уже намного ближе к JS-инструментам бэкенда вроде Node.js. Тем не менее Node.js, работающий на движке JavaScript V8, зачастую обходит PHP в определённых сценариях. Как объясняется на RisingStack, главная причина в его неблокирующемся вводе-выводе и эффективной обработке параллельных подключений. В ситуациях, связанных с высокой конкурентностью и обработкой в реальном времени Node.js зачастую окажется более удачным выбором.

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

В свою очередь, JavaScript может похвастать реестром npm, предлагающим широкую коллекцию пакетов практически под любые нужды. И если экосистема PHP больше сосредоточена на веб-разработке, то в случае JS она оказывается шире и полноценно охватывает не только фронтенд, но и бэкенд. Это делает JS более гибким, но также повышает порог вхождения для тех, кто только начинает знакомство с этим языком.

Что касается синтаксиса и функциональных возможностей, то здесь PHP и JS значительно отличаются. PHP является очень зрелым языком с надёжным набором встроенных функций. За последние годы в него были внедрены современные возможности вроде подсказки типов при вводе, атрибутов и коротких стрелочных функций. JS же является более динамичным и гибким языком, предоставляющим такие возможности, как функции первого класса и асинхронное программирование. Однако обширное применение в этом языке обратных вызовов и промисов может выступать как его преимуществом, так и недостатком, поскольку позволяет использовать мощные парадигмы программирования, но также ведёт к созданию сложных вложенных структур кода, известных как «ад обратных вызовов». Как бы то ни было, внедрение функционала async/await помогло противостоять этой проблеме.

Рассматривая плюсы и минусы каждого из этих языков, важно оценивать их пригодность для конкретного случая. PHP зачастую лучше подойдёт для традиционных веб-приложений, систем управления контентом (например, WordPress, Drupal, Joomla) и платформ электронной коммерции (например, Magento, WooCommerce, PrestaShop). Простота и лёгкость освоения этого языка делают его прекрасным выбором для людей, только входящих в сферу веб-разработки.

С другой стороны, предлагаемые JS инструменты бэкенда вроде Node.js больше подходят для приложений реального времени (например, чатов и онлайн-игр), одностраничников (SPA, Single Page Applications) и проектов, требующих единообразного языка для фронтенда и бэкенда. Node.js прекрасно подходит в ситуациях, где приложению требуется обрабатывать множество одновременных подключений и неблокирующиеся операции ввода-вывода.


Изображение взято с Funny Developer

Так заслуживает ли PHP места среди множества других решений для бэкенда?


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

При этом со стороны JS в качестве сильных соперников на поприще веб-разработки возникли такие инструменты, как Node.js. Эти решения отличаются высокой производительностью в определённых сценариях, разносторонней экосистемой и единообразием языка для фронтенд- и бэкенд-составляющих. И хотя освоить JS сложнее, высокая гибкость и мощные возможности делают этот язык привлекательным выбором для широкого спектра приложений.

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

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

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


  1. ednersky
    02.06.2023 15:19

    мне кажется, что минусы статье ставят те, кто прочитал исключительно заголовок


    1. Alexmaru
      02.06.2023 15:19
      +54

      Да не, просто выглядит как стандартная статья с сеоштного сайта. Хороший заголовок, и водяное содержимое, ноль исследования. Если пролистать не читая, выглядит красиво. Может, гуглоботу зайдёт.

      "Кто эти люди?" - ждёшь истории успеха или ужаса от пачки конкретных людей. А тут - как будто у GPT спросили факты.


      1. Warrangie
        02.06.2023 15:19
        +3

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


    1. FanatPHP
      02.06.2023 15:19
      +40

      Мне кажется, минусы ставят те, кто уже раз 5 прочитал точно такую же статью в 2023 году.
      И еще десяток в 2022.


    1. FanatPHP
      02.06.2023 15:19
      +16

      К тому же, не стоит переживать за корпоративные блоги. Они вполне в состоянии о себе позаботиться.
      Как по мановению волшебной палочки -2 вдруг за несколько минут превращается в +5.


      1. art1fact
        02.06.2023 15:19

        Обычная динамика по плюсикам за 1000 просмотров. Никакие рычаги не дёргали.

        Вижу ваше имя на хабре и поверьте на слово - обидеть никого точно не хотели. Очень долго думали, как можно перевести "who are the people still using php" не потеряв смысл, но и не добавляя лишней агрессии. Получилось - как получилось.


        1. FanatPHP
          02.06.2023 15:19
          +25

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


          Вижу ваше имя на хабре

          Попробуйте смотреть не на имя, а на комментарий, на который отвечаете. У меня и близко ничего не было про какое-то "обидеть". А было про то, что статья — откровенная халтура. Вот если в программировании есть говнокодеры, то в копирайтинге, соответственно — говнопереводчики. И за такую халтуру им должно быть стыдно.
          В этой статье плохо всё, начиная от бессмысленного заголовка. Авторка так и не смогла решить, какую статью она пишет. Как та рабочая лошадь, начав вроде бы про РНР, она сбивается на привычную дорожку, выдавая стандартный блогспам вида "X vs Y в 20хх". По классической же схеме, в которой пережевывается целое ведро воды и нет вообще никакой конкретики или новизны. Я посмотрел на другие ее работы — все в таком же стиле, плюс еще обязательное "10 вещей которые надо знать про Х". Текст ради текста.


          Вот казалось бы, кто её за язык тянул, все время сравнивать с нодой? Причем не с позиции практикующего программиста — это было бы как раз понятно, и очень интересно — личные впечатления человека, который с ноды пересел на пхп.


          Но ведь нет — у нее про это ни слова, а один копирайтерский бубнёж. Я, кстати, сейчас посмотрел ещё раз — и вот на 100% уверен, что у нее уже была заготовка, "РНР vs Node.JS". Но ее видимо, кто-то надоумил, что этот шлак уже не заходит даже индусам. И она, как Церетелли, быстренько прикрутила Колумбу голову Петра. Вот прямо видна эта склейка, как в фотошопе: все, что идет от первого мемасика — это совершенно другая статья, не имеющая никакого отношения к заявленной теме. Вы говорите, что вы редактор? И я вам должен объяснять все эти элементарные вещи?


          Ну и собственно перевод, со всеми этими "свойствами конструктора" и "типами объединения".


          1. php7
            02.06.2023 15:19
            +3

            Я бы сказал, не в переводчике проблема.

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


    1. php7
      02.06.2023 15:19
      +14

      Извините, но это очередной шлакоперевод.

      Абы було.


  1. Enfriz
    02.06.2023 15:19
    +8

    но позднее в индустрии программирования акцент сместился в сторону JavaScript

    My sweet summer child...


  1. Oceanshiver
    02.06.2023 15:19
    +20

    И как этот опыт можно сравнить с моим скромным миром серверных проектов на JS?

    По-моему гораздо интереснее кто те люди, которые используют server-side js


    1. isden
      02.06.2023 15:19
      +1

      Вы еще вот такого не видели :)

      A modern, high performance, flexible SMTP server. Haraka is an open source SMTP server written in Node.js which provides extremely high performance

      https://haraka.github.io/


    1. denis-isaev
      02.06.2023 15:19
      +3

      А что с ними? У них вроде все норм: большое развитое коммюнити, инструменты на все случаи жизни.


      1. Oceanshiver
        02.06.2023 15:19
        -4

        Как там в node.js с нормальной многопоточностью?


        1. polearnik
          02.06.2023 15:19
          +3

          многопоточность определнно есть . что в вашем понимании означает "нормальная"?


          1. Oceanshiver
            02.06.2023 15:19

            Ну, js как язык сам по себе вообще не предназначен для работы с потоками. Довольно странно впихивать эту модель в язык, который изначально этого не поддерживает и говорить что все в порядке


            1. polearnik
              02.06.2023 15:19

              я не спорю с тем что появившись гораздо поздже многопоточность была прикручена изолентой сбоку но инетерсно чего не хватает в потоках. ОБщение между потоками есть и с этим можно работать. МОжет в других языках прижумали какието крутые фичи о которых вы знаете


        1. denis-isaev
          02.06.2023 15:19
          +1

          Какие задачи, стоящие перед рядовым сервер-сайдом, вы хотите решать нормальной многопоточностью?


  1. joffer
    02.06.2023 15:19
    +10

    ждите от этого же автора через неделю "Кто до сих пор использует С?" и содержание будет в похожем ключе)


  1. SerafimArts
    02.06.2023 15:19
    +7

    Как объясняется на RisingStack, главная причина в его неблокирующемся вводе-выводе и эффективной обработке параллельных подключений

    Осталось понять откуда в PHP внезапно проблемы с блокирующим io, когда обычная функция stream_set_blocking превращает любой io в неблокирующий. Хоть чтение с файловой системы, хоть сокеты, хоть что угодно...

    При этом наличие файберов в PHP делает не то что ненужным аналог в JS из async/await, но и вообще ставит под сомнение их существование в природе, т.к. JS-ный аналог становится просто неудобным.


    1. Gorthauer87
      02.06.2023 15:19

      Ну оно же так понимаю просто делает чтение из сокета не блокирующим, но тогда его надо руками опрашивать, это же не переход на epoll или просто господи на io_uring?


      1. SerafimArts
        02.06.2023 15:19
        +3

        Ну можно вместо встроенного select просто проверить на eof и попытаться считать, если делать влоб.


        С другой стороны в пыхе можно доустановить libev, libevent, ev или libuv, а там уже на выбор, хоть poll, хоть epoll, хоть kqueue, хоть devpoll, хоть evport, хоть ещё что. Накрайняк есть ffi и руками можно допилить нужное. Было бы желание.


    1. farrow
      02.06.2023 15:19

      Расскажите поподробнее, пожалуйста. Например, нужно отправить 2 http-запроса без блокировки, но не одновременно: сначала первый запрос, затем вернуться что-то повычислять, и отправить второй, а при получении ответов обработать их.
      В JS это решается легко через async/await, в GO — тоже через горутины. Есть ли встренный аналог в PHP? Т.е. без установки swoole/amp/reactphp, без расширения parallel, без написания своего event loop на сокетах. Если такого нет, то дальше встает выбор во что вложить усилия: в изучение нового async-фреймворка на PHP, или в изучение нового языка, и по моим наблюдениям новый язык чаще побеждает


      1. mavir
        02.06.2023 15:19

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


        1. farrow
          02.06.2023 15:19

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


          1. mavir
            02.06.2023 15:19

            Не знаю как в Go, но в JS async/await не решит этот придуманный сценарий, так как доходя до await выполнение "приостанавливается" и дальше ждет, что вернет вызов. Почему сценарий придуманный? Потому что не могу придумать сценарий, когда мог бы спокойно выполнять какой-то код без полученных данных из внешних источников. Это такой мизерный случай, что в обычной разработке встречается практически никогда

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


            1. farrow
              02.06.2023 15:19

              в JS async/await не решит этот придуманный сценарий, так как доходя до await выполнение "приостанавливается" и дальше ждет, что вернет вызов

              Это касается только асинхронной функции, в которой находится апи-вызов. А вот основной тред не блокируется и в нем можно продолжать работать.


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

              1. Мы не всегда получаем, иногда только отправляем и позже лишь хотим убедиться, что запрос ушел без ошибок и не упал. Это не какая-то редкая/экзотическая операция.
              2. Когда получаем данные, то далеко не всегда знаем в одной точке все запросы, которые нам надо сделать в течение всего жизненного цикла. И тут PHP не дает удобного способа сделать эти вызовы из разных мест, сохранив асинхронность.
                Эти моменты и пытаются решить асинк-фреймворки


            1. FanatPHP
              02.06.2023 15:19

              не могу придумать сценарий

              Просто представьте себе вебсокет сервер, который в цикле обрабатывает запросы множества пользователей.
              Я об этом сценарии задумался, когда пытался понять, где можно использовать асинхронные запросы в mysqli


            1. SerafimArts
              02.06.2023 15:19

              Не знаю как в Go, но в JS async/await не решит этот придуманный сценарий, так как доходя до await выполнение "приостанавливается" и дальше ждет, что вернет вызов.

              Это не так. await лишь делегирует задачу "наверх", т.е. это другая форма записи yield. Фактически альтернатива выглядела бы так:


              // JS
              let response = await request('...');
              
              // PHP
              yield from $process = request('...');
              $response = $process->getReturn();
              
              // PHP (или так, если верхний обработчик 
              // умеет сам разворачивать вложенные
              // генераторы и возвращать результат через ->send(...))
              $response = yield request('...');

              Что фактически может быть в PHP упрощено в сторону:


              // PHP
              $response = request('...');
              
              // где внутренности request
              while (!feof($stream)) {
                  $body .= fread($stream, 1024);
                  Fiber::getCurrent() && Fiber::suspend();
              }


  1. delphinpro
    02.06.2023 15:19
    +9

    Кто использует PHP?

    Да любой, кому нужен просто сайт, а таких большинство. И что он выберет, или выберет тот, кого он наймет для разработки? Конечно PHP! Это бюджетно, любой шаред подерживает пхп, VPS не нужен. Это легко, просто установи WP (или другую CMS). Это выгодно – разработчиков пхп найдешь везде, для доработки проекта.


    1. vai
      02.06.2023 15:19
      +5

      Я вам больше скажу, даже не просто сайт вполне себе переваривается PHP


  1. nronnie
    02.06.2023 15:19
    +9

    преимущественно из-за его ассоциирования с устаревшими проектами WordPress

    Преимущественно из-за петабайтов говнокода на нем написанном. У меня однажды была задача портировать код из ПХП в шарп и такого ада я не видал ни до, ни после. Причем, я смотрел на современный ПХП - вполне себе нормальный язык, позволяющий писать вполне нормальный, современный код, но, похоже вокруг него уже сложилась особая культура программирования, суть которой в отсутствии какой-либо культуры программирования вообще.


  1. vai
    02.06.2023 15:19
    +2

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


    1. FanatPHP
      02.06.2023 15:19
      +7

      Всё так. Но к счастью, сейчас пальма первенства в этом направлении прочно удерживается Питоном. И природа реально начинает очищаться. Нормальный код вполне реально встретить в вопросах на Тостере и Стаковерфлое.


  1. iwram
    02.06.2023 15:19
    -3

    Оставлю истории из серии "бабка рассказала".

    • Одна компания контейнеризировала приложения и хотел заехать в кубер. Но контейнеры с пхп как то криво работали и ничего не получалось - по итогу переписали все сервисы на Go и закопали этот язык.

    • Вторая история. Одна компания смогла перевести все сервисы в докер и даже успешно запустила в кубере, при этом путь пакета до php-fpm проходил через несколько nginx (да и тот самый, который стоит перед самими php). Все работает прекрасно, все все устраивает... Нет фронетендеры хотят nodejs и другие хипстерские вещи и так пхп стал своего рода бэкендом с нотками фронтенда и иногда случается такая неразбериха + поиск кто должен исправлять багу на фронте, которая вроде как и на пыхе, но при этом часть на nodejs.

    Согласен с комментариями по критике SEO и тп. Кликбейтное название - это не то что желают пользователи. Итог простой, есть язык, который используют многие компании - кто готов вкинуть средств на развитие, тогда будет хорошо. Если в разработку не будут вливать средств + слабое сообщество, то какой бы ни был супер язык- он умрёт.


    1. bolk
      02.06.2023 15:19
      +8

      Слушайте, но это правда какие-то истории от бабки. Мы упаковали пхп в контейнер на раз, даже не знаю что тут может не получиться, собственно.


      1. iwram
        02.06.2023 15:19

        Все так. Тут имел ввиду, что специалисты бывают разные и по разному используют решения, бывает что не могут просто. Это не более чем истории.


    1. myhambr
      02.06.2023 15:19
      +2

      фронетендеры хотят nodejs

      С каких пор фронтендеры командуют бэкендерам, на чём делать бэк ? Бэкендеры же не командуют фронтендерам, что выбрать, vue, angular или rect.


  1. olku
    02.06.2023 15:19
    +3

    Последние десять лет, исключая время ковида, регулярно посещал International PHP Conference в Берлине. Помню первые презентации Композера, ренессанс 7 версии, стенды JetBrains, полные залы, горы мерча и призы. В этом году было аж два спонсора, около 300 человек, из которых подавляющему большинству за 30. Чувак из Zend сокрушался снижению популярности. Вероятно, и среди ваших коллег есть те кто со стека съехал?


    1. Areso
      02.06.2023 15:19
      +3

      У нас монолит на пыхе, новые микро- и макросервисы на Гоу.

      При этом, вполне себе хайлоад (несколько миллионов уников в сутки), до 35000 TPS.


  1. aamonster
    02.06.2023 15:19
    +3

    Забавно, что всё это нам рассказывает человек, так и не перешедший с JavaScript на TypeScript (ах, какое счастье было, когда в моей конторе этот переезд произошёл...)


  1. raspberry-porridge
    02.06.2023 15:19
    +7

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


    1. FanatPHP
      02.06.2023 15:19
      +1

      Не повышается от слова совсем. Да, он начал чаще поправлять программиста, если тот совсем уж начинает говнякать, типа $a = ''; $a['id'] = 1; — но это повысит порог разве что для совсем уж дебила.


      Умирает потому что перестал быть модным, потому что окрепли жизнеспособные альтернативы, и в силу традиционной репутации.


      1. raspberry-porridge
        02.06.2023 15:19

        Приведу свой пример. Начинал с php, сейчас уже больше 7 лет на C#. Заходил посмотреть ради интереса что там появилось с 8 версии, вроде как даже типизацию обещали. Зашёл, ужаснулся, вышел. php как был монстром Франкенштейна в плане синтаксиса, так и остался.


        1. FanatPHP
          02.06.2023 15:19
          +3

          Эээ. Вы, вроде бы, хотели рассказать про повышенный порог вхождения?


          1. raspberry-porridge
            02.06.2023 15:19

            Это оно и есть. Если бы я сейчас с C# перекатывался обратно на php, это бы заняло некоторое время. Усложнённый несогласованный синтаксис - одна из причин.


            1. FanatPHP
              02.06.2023 15:19
              +6

              В каком смысле усложненный? Можно пример?
              Тайп хинты опциональны, они ничего не усложняют.


              Мне кажется, вы немного запутались в своей аргументации. Давайте я вам напомню:


              Порог вхождения в новые версии языка стремительно повышается

              Можете привести пример такого повышения?


  1. swanrnd
    02.06.2023 15:19
    +2

    Расскажу про свой опыт.
    Мы в основном используем nodeJS.
    Но PHP используем:
    1) всякие отчеты из аналитики, это проще на PHP взять из Postgres данные и отобразить их в табличкой виде.
    2) Работа со всякими API где надо сделать post запрос, причем на PHP больше всяких примеров от сервисов, чем на nodeJS.
    3) Генерация картинок на лету, на PHP намного лучше библиотеки
    4) Всякие примитивные скрипты, допустим вернуть место на диске


    1. bbc_69
      02.06.2023 15:19

      Работа со всякими API где надо сделать post запрос, причем на PHP больше всяких примеров от сервисов, чем на nodeJS.

      Что-то я не понял, вы по примерам кодите что ли? Какая разница, каким языком запросы отправлять? Равно как и принимать их.


      1. swanrnd
        02.06.2023 15:19

        Обычно так. Есть сервис, не особо популярный, там есть библиотека работы с ним на PHP или готовый скрипт.
        То есть там нужно, не только выполнить POST/GET, но реализовать работу с токенами с ключами, сделать авторизацию, которая бывает разная.
        Иногда плохо документирована, но есть пример кода и переводить его в nodejs как-то не очень и хочется.
        Пример Одноклассники, вот как там ситуация выглядит
        https://apiok.ru/dev/examples/php

        Плюс PHP проще контролировать если кривая библиотека.

        То есть мы закидываем скрипт в папку и он выполняется раз в сутки и дополнительно пишет время исполнения в файл. Который независимо проверяется.
        То есть не может быть утечки, не может быть кучу процессов nodejS и так далее.


  1. gmtd
    02.06.2023 15:19
    +1

    Почему PHP?

    Понадобилось тут питоновский скрипт запустить на сервере (через вебсервер) - убил кучу времени, но так и не понял как это делается легко и естественно

    Nginx или Apache с PHP настроить - 5 минут

    С PHP как серверным языком (сайты) работать удобней всего даже сейчас, несмотря на его неудобства