Как и в каких проектах юзаете PHP?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Вот я пятница подоспела, так что можно похоливарить. Сколько читаю форум, всегда вижу определенные мысли по поводу применения PHP. Судя по комментариями пых юзают только для: клепание WordPress/Joomla сайтиков, пиления интернет магазинов на Magento или фреймворках, и нищебродские компании которые из говна и палок и программеров по дешевке делают бизнес в IT. Очень интересно знать, есть кто-нибудь кто применяет PHP в более благородных целях и делает что-либо более серьезное способное вызвать уважение злопыхателей к этом языку?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

Фишка в том, что PHPшники никому ничего не должны, тем более доказывать что — то, дабы

вызвать уважение злопыхателей к этому языку

ИМХО, злопыхатели в основном это люди, в силу своих комплексов которым необходимо самоутвердиться за чужой счет и почесать ЧСВ

Ха, смотри, лошары, на ПХП пишут! Бомжей понабирали, и они лабают! etc.

Еще есть личности, которые подхватывают данный тренд аля «гнать говно» просто потому что копируют чье — то поведение.

Наиболее яркий персонаж, который мне больше всего запомнился на этом форуме из последних говнометателей на пых — Александр Вовчок ( Имя транслитом). Последнее время то и дело натыкался на яркие афоризмы этого товагисча, в стиле «пхпшники — говно».

Сам же мир PHP на данный момент делится на две вселенные — та, в которой используются CMS типа Джумлы, Вордпрес ( ВуКоммерс туда же), и CodeIgniter и YII2. Вторая — это проекты на Symfony и на Laravel. Более сложные пишутся на первом, более простые — на втором. Тут и применяются всякие DI, SOLID, etc. Пишутся тесты ( юниты, функциональные / интеграционные, бехаты, используется CI ( более простые проекты юзают Travis, более нагруженные, где одновременно XXX билдов запущено, мигрируют дальше, на тот же Jenkins). Для того, чтоб распаралелить выполняемые задачи, используются очереди ( RabbitMQ). Сам знаю проекты где работает паралельно не менее 4 — 6 очередей. Активно используются поиксовые системы, тот же elasticsearch.

Наиболее частое использование в проектах, в которых я участвовал — это ecommerce. А вообще — все, что в вебе находится, то и можно запилить, Лично для бизнеса я бы выделил 2 плюса, это скорость разработки и кол-во специалистов которых можно нанять.

P.S. Есть еще одна категория людей которые активно мажут PHP говном — это сами phpшники. Почему? Ответ прост — дабы отвадить желающиx войти и направить эти орды в другие направления. Так что все верно, PHP — говно, пишут на нем бомжи, живущие под мостом Платона в картонных коробках, платят мало. Так что все правильно, идите в Джаву / JS \ QA, тут ловить нечего

PHP — це нішова мова. І, де факто, є #1 для розробки сайтів: від візиток до CRM та клієнт-банків. На одному сервері в нас легко обслуговуються сотні тисяч унікальних відвідувачів в день.

PHP вміє не все, що буває треба в веб. Тут можна написати якесь «rest» api і на «улюбленій мові». Ми, наприклад, api, на яке в пікові моменти падає по 1500 запитів в секунду написали на java. Чи ось апі, для роботи якого треба в пам’яті тримати масив на гіг теж писали на джаві.

Так що ... кому нудно і не круто з php... ви подумайте ... мож вам не php заважає, а, просто веб не по душі... в веб, ви знаєте, купа верстки, купа css/js, всякі бази, кеші та апі, купа форм та адмінок. Це може бути не настільки все і цікаво також і на будь-якій іншій мові (коли черговий користувач зламався на вашій формі).

Щодо цікавих задач ... їх вистачає і в цій сфері. А нудних задач вистачає і в інших. Ви знаєте, цікавість задачі часто не лише від технічного рішення залежить, а й від того яку проблему ви вирішуєте.

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Майже всюди у вебі.
Легко закинути на будь-який сервер
Легко швидко зробити простенький сайт/скрипт

А більшого у 80%+ випадках і не треба.
Замкнене коло пхп: замовники вибирають пхп бо кодерів багато, кодерів багато бо треба пхп.

Да практически любой проект, где нужно сделать сравнительно быстро, не дорого и чтобы кое-как работало...😉

Делал e-commerce с нуля на Laravel и Django, что бы сравнить скорость разработки для будущего проекта — на Django оказалось быстрее

Сделай на Phalcon

Посмотрю, спс, по производительности наверно ок, а вот по скорости разработки — вопрос, если есть логика

По скорости разработки — упрощённая версия Ларавел, проблема только среду настроить, нужен экстеншен к языку

Сорри, невнимательно прочитал

Нічого особистого, але хай вона згорить та маджента, якщо cms, то wp з головою

ПХП используется также в кровавом энтерпрайзе, в частности, связка Symfony + Doctrine, которые, по сути, являются клонами джавовских Spring и Hibernate соответственно. На Западе Symfony — довольно востребованный фреймворк. Начиная с 7.х PHP стал больше подходить к highload-приложениям, в частности, его используют в одной высоконагруженной системе для отправки SMS сообщений.

Плюсы Пыха:
— очень простой
— легкость настройки
— низкий порог входа в разработку

Пых используется на 90% е-комерс сайтов.
Потому если цель — быстро запилить стартап и денег заработать то только Пых.

Если цель вкалывать на галере и доделывать ентерпрайз кросплатформенный после индусов, то менее популярные языки, типа Java, Scala и тд.

Имхо: какой язык лучше — обсуждают в основном аутсорс макаки, которым скучно и они ищут признания своих знаний. Первичней ЧСВ чем бизнес задачи.

Одразу в мінус. Дуже простий = дуже просто написати поганий код.

За вашою логікою найкращий код буде тим, що написаний на брейнфаці або асемблері.

Якщо одразу писати складну систему — є варіанти краще.

Що ви маєте на увазі під «складною системою»?

Розмір проекту. Чим більший тим важке на пиху писати і підтримувати.

Якщо ви одразу пишете легасі, то так. При певних підходах підтримування пихи буде тільки дешевшати з часом. Все треба вміти готувати. А ще не слухати «хайперів», вони до добра не доведуть

Всюди чим більше коду тим складніше підтримувати, а в пиху навпаки.

Якщо писати «в лоб», то ви дійсно отримаєте квадратичну залежність кількості коду та вартості підтримки. Не важливо, це пиха, жаба, пітон чи гомова. Тому що ви постійно вносите новий код в сильнопов’язану архітектуру. Тобто зі зростанням кодової бази вона майже повністю буде складатися з унікального коду. Якщо ви переходите до варіанту, наприклад фреймворк + DSLs, то на перших ітераціях ви будете писати багато нового коду, поки не сформуєте фреймворк та DSLs, але потім кодова база перестане зростати, тому що вам для рішення задачі не потрібно буде щоразу міняти ядро фреймворку чи процесор DSL, ви будете писати мало та ефективно.

Ви ж не забули що ПЗ пишеться не однією людиною, а командою з різних, які ще й приходять і йдуть?

Ні. Не забув. Нові прийдуть на готові DSLs. Вони не зможуть нічого зламати чи зробити не так.

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

Завжди треба бути вмілим. Незалежно на чому ти пишеш. Але треба завжди думати про ефективність прийнятих рішень

Якщо ви переходите до варіанту, наприклад фреймворк + DSLs, то на перших ітераціях ви будете писати багато нового коду, поки не сформуєте фреймворк та DSLs

Эту идею, вполне вероятно, нужно будет «защитить» у заказчика (который вряд ли согласится).

Ні. Не забув. Нові прийдуть на готові DSLs. Вони не зможуть нічого зламати чи зробити не так.

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

В общем, для очень длинных проектов может помочь, наверное, если бизнес-требования не будут меняться.

Эту идею, вполне вероятно, нужно будет «защитить» у заказчика (который вряд ли согласится).

Замовники вміють рахувати гроші.
Не думайте за них, думайте як краще код писати.

В общем, для очень длинных проектов может помочь, наверное, если бизнес-требования не будут меняться.

Що значить може допомогти? На довгих проектах тільки це й допомагає

Замовники вміють рахувати гроші.
Не думайте за них, думайте як краще код писати.

Дело не в «считать деньги» (хотя в энтерпрайзах их тоже пилят) — дело в том, что они могут настаивать на своих решениях, а т.к. DSL — это далеко не отраслевой стандарт, его нужно суметь «продать». Конечно, хорошо, когда с заказчиком всё гладко, но так ведь далеко не всегда.

дело в том, что они могут настаивать на своих решениях

Якщо він такий «розумний», та знає краще за спеціалістів, як писати програми, то нехай їх пише сам. А якщо вирішив вийняти спеціалістів, то нехай довіряє їм та не лізе не в свою зону відповідальності

В PHP много чего поменялось в последнее время. Судить по легаси коду на фрилансе или тому впечатлению, что вы видели n лет назад до перехода на руби или питона не стоит. Одно из самых больших преимуществ считаю его модель ориентирована сразу на веб — запрос отработал и умер. За счет в том числе и этого довольно быстрая разработка. Если что-то нужно в виде демона и пугают возможные утечки памяти или тяжеловесные операции по процу то можно вынести в отдельный сервис на другом ЯП.

Тю, а зачем ему жить дольше для API и SAP? Ну раньше отдавал переколбашенную модельку с вьюхой, а теперь — модельку и вьюшку по отдельности. Я бы сказал что веб сейчас проще в плане работы со стейтом на фронте, браузер сам помнит что надо и не задрачивает сервер/мозг бэкэндщика.

Для швидшої роботи я думаю. Для оптимізації ресурсів.

как именно?
Если про, ASP.Net с которым я знаком, то там на каждый риквест не весь апп, а отдельный инстанс создается по новой но после того как отдав риспонз, уносится в небытие с помощью GC.

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

Ну перформанс дело тонкое, и больше всего проседает от кривых рук. Те же запросы в базу могут ложить весь сервак и базу, а не то что там разница между компилируемыми и скриптовыми языками :-)

Ну если сравнивать чисто платформы то да.

так работы в эту сторону ведутся. посмотрим что будет с jit в пыхе 8, но к примеру из анонсов 7.4 — обещают прелоад, с возможностью оставить в памяти чуть ли не весь код вендоров, с тем, чтобы ускорить создание нового процесса

От про создание процесса не подумал, это да, в дотнете все риквесты через TPL, как пых вообще хз.

php-fpm решает проблему новых процессов

За счет этого упрощается разработка, а именно:
1. Всегда прогнозировано начинаем с чистого стейта приложения, который предыдущие запросы не «загрязнили», то есть такая себе отказоустойчивость и защита от побочных влияний и пойманных багов в предыдущих запросах к приложению.
2. Упрощается поиск багов, т.к. нет проблем с локами и нечего делить с другими потоками, т.к. php запускается однопоточно по модели — запрос -> новый инстанс. Сделал изменения в коде -> сразу увидел в браузере результат без перезагрузки веб-сервера.

Для оптимизации есть опкеш (очень сильно уменьшает разницу между запуском с нуля на каждый запрос и с запуском с подготовленным бутстраппингом классов) и php-fpm делает пул процессов и сам их очищает, вместо запуска процесса наново. Идет работа над Preloading и php-ffi.

Одной из первых попавших на глаз попыток реализации идеи с сохранением ресурсов была еще в phpDaemon от kakserpom, теперь уже появились reactphp, swoole и т.д. Если такое надо, то подключаем и радуемся.

Тепер апі і сингл пейдж апи в моді.

Это абсолютно не значит что

Померати вже не треба.

И умирание после ответа делает код несколько лояльнее к ошибкам, коих может быть множество так как и пишут по-быстрому (говнокодят), и в сторонних библиотеках хз что может случиться, и сторонний сервис не ответить. Или возьмем в пример какие-то расчеты или обработку файлов — если в пхп один клиент сумеет прислать что-то неперевариваемое, то умрет только его процесс. Если то же самое произойдет в ноде — бек зависнет сразу для всех клиентов (да, можно конечно запустить несколько нод и распределять нагрузку, но это не то же самое)

Отработал и умер имеет плюсы только для разработчика, чтоб не думать об освобождении ресурсов и т.д. Но имеет и свою цену — производительность. Не от хорошей жизни появляются такие предложения — wiki.php.net/rfc/preload
И такие штуки habr.com/...​ompany/badoo/blog/434272

В этом преимущество и для разработчика и для бизнеса. Написал приложение под веб — оно работает и меньше гемора с фантомными багами и утечкой памяти. Для бизнеса все работает предсказуемо. Стало где-то проседать — подняли еще виртуалок. Есть явные узкие места по процессору или очень специфические задачи — взял что-то быстрое (сейчас стало модно использовать Go) и подключил через rpc или rest. А раз уж захотел поизвращаться и сделать что-то с eventloop, например, сервер для вебсокетов — подключил reactphp. Не нужен еще один универсальный язык под кучу задач.

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

Я написал на пчихе скрипт, который тянет объекты из aws и формирует на их основе связанные страницы в Mediawiki

Та можете собі спокійно і далі писати драйвери для принтера на сях...
А ми тут поки будемо займатися eCommerce =)

А взагалі треба знайти сили не заходить цей холіврний срач... =)

Знайшов=)
Щасливо)

Коментар порушує правила спільноти і видалений модераторами.

це не відповідь на запитання автора, швидше підтвердження його слів про

клепание WordPress/Joomla сайтиков, пиления интернет магазинов на Magento или фреймворках, и нищебродские компании которые из говна и палок и программеров по дешевке делают бизнес в IT

Ну таке...
Як на мене в 78% веба багато чого серйозного. Ця цифра демонструє як сильно ви не недооцінюєте PHP.

клепание WordPress/Joomla сайтиков

Используют

пиления интернет магазинов на Magento или фреймворках

Тоже. Учитывайте, что eCommerce — это огроменная ниша, она включает не только витрину с товарами. Бекенд с управлением продуктами, учётом, складом, логистический софт и всякие внутренние калькуляторы — тоже м.б. написаны на PHP, частично или полностью.

нищебродские компании которые из говна и палок и программеров по дешевке делают бизнес в IT

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

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

Я ж не знаю, что уважают эти самые злопыхатели. Судя по критике, злопыхатели уважают консистентность порядка параметров функций стандартной библиотеки. Это мало связано с продуктами.
Ну а вообще, много чего делается. Вебсайты самой разной сложности и нагруженности, обычно в паре с js фреймворком или либой для морды. Бизнесовые порталы и веб-приложения. Внутренние продукты компаний (частично затронул выше). Различные скрипты и кронджобы. В общем, всё то же, что и на других языках, что можно крутить на сервере, кроме драйверов/низкоуровневого, и ещё его не очень удобно использовать для приложений, которые должны постоянно крутиться в памяти (например, обработчики очередей) или должны делать на машине что-то квази-системное. Ну например, я не знаю... Получив запрос API, записать что-то в один из сетевых интерфейсов на машине.

Меня как-то спросили, не смогу ли я подправить кое-что на сайте.

Попросил исходники, прислали архив... в архиве пяток файлов, и основной site.php размером не то 200, не то 250 килобайт.

Да, это вызвало уважение :-))) но браться за правки, ессно, я не стал.

Фишка в том, что PHPшники никому ничего не должны, тем более доказывать что — то, дабы

вызвать уважение злопыхателей к этому языку

ИМХО, злопыхатели в основном это люди, в силу своих комплексов которым необходимо самоутвердиться за чужой счет и почесать ЧСВ

Ха, смотри, лошары, на ПХП пишут! Бомжей понабирали, и они лабают! etc.

Еще есть личности, которые подхватывают данный тренд аля «гнать говно» просто потому что копируют чье — то поведение.

Наиболее яркий персонаж, который мне больше всего запомнился на этом форуме из последних говнометателей на пых — Александр Вовчок ( Имя транслитом). Последнее время то и дело натыкался на яркие афоризмы этого товагисча, в стиле «пхпшники — говно».

Сам же мир PHP на данный момент делится на две вселенные — та, в которой используются CMS типа Джумлы, Вордпрес ( ВуКоммерс туда же), и CodeIgniter и YII2. Вторая — это проекты на Symfony и на Laravel. Более сложные пишутся на первом, более простые — на втором. Тут и применяются всякие DI, SOLID, etc. Пишутся тесты ( юниты, функциональные / интеграционные, бехаты, используется CI ( более простые проекты юзают Travis, более нагруженные, где одновременно XXX билдов запущено, мигрируют дальше, на тот же Jenkins). Для того, чтоб распаралелить выполняемые задачи, используются очереди ( RabbitMQ). Сам знаю проекты где работает паралельно не менее 4 — 6 очередей. Активно используются поиксовые системы, тот же elasticsearch.

Наиболее частое использование в проектах, в которых я участвовал — это ecommerce. А вообще — все, что в вебе находится, то и можно запилить, Лично для бизнеса я бы выделил 2 плюса, это скорость разработки и кол-во специалистов которых можно нанять.

P.S. Есть еще одна категория людей которые активно мажут PHP говном — это сами phpшники. Почему? Ответ прост — дабы отвадить желающиx войти и направить эти орды в другие направления. Так что все верно, PHP — говно, пишут на нем бомжи, живущие под мостом Платона в картонных коробках, платят мало. Так что все правильно, идите в Джаву / JS \ QA, тут ловить нечего

Более сложные пишутся на первом, более простые — на втором.

Вы не перепутали?

Более сложные- на симфони, более простые — на ларавел, вот так имел в виду, так что не перепутал :)

Аа)) а то я из текста понял так что вроде на вордпрессе пишут проекты более сложные чем на симфони :)

Zend Framework 3 почему-то сейчас в тени. Хотя очень мощный и продуманный фрейверк для больших энтерпрайз проектов.

хороші жарти... тільки не смішні

про те, що він може і потужний (тонна коду не може бути не потужною), але ніфіга не продуманий — карго культ java та її патернів не робить там нічого доброго

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

На уже запущеных проектах, а для старта новых бизнес будет выбирать другой язык. Что в среднесрочной перспективе уже нехорошо для php-разработчиков.

Та вот нет. Можно скатиться к судьбе Perl.

Хыхы, в далекой молодости нацарапал несколько консольных скриптов на пыхе, ибо с перлом было разбираться сильно влом

Сейчас js проходит тот же путь что и php. Он начинает таким же уродливым и не продуманным как и php. На js каждый пишет свой велосипед, потом идет путь к типизации и улучшения самого языка с влиянием других языков, остановка сообщества на нескольких фреймворках.

найти соображающего джуна та еще задачк

Ох, в жс тоже. Например можно встретить такое (кто жс знает поймут)

someArr.forEach(async el => await somefunc(el));

только конкретно этот на Django

PHP — це нішова мова. І, де факто, є #1 для розробки сайтів: від візиток до CRM та клієнт-банків. На одному сервері в нас легко обслуговуються сотні тисяч унікальних відвідувачів в день.

PHP вміє не все, що буває треба в веб. Тут можна написати якесь «rest» api і на «улюбленій мові». Ми, наприклад, api, на яке в пікові моменти падає по 1500 запитів в секунду написали на java. Чи ось апі, для роботи якого треба в пам’яті тримати масив на гіг теж писали на джаві.

Так що ... кому нудно і не круто з php... ви подумайте ... мож вам не php заважає, а, просто веб не по душі... в веб, ви знаєте, купа верстки, купа css/js, всякі бази, кеші та апі, купа форм та адмінок. Це може бути не настільки все і цікаво також і на будь-якій іншій мові (коли черговий користувач зламався на вашій формі).

Щодо цікавих задач ... їх вистачає і в цій сфері. А нудних задач вистачає і в інших. Ви знаєте, цікавість задачі часто не лише від технічного рішення залежить, а й від того яку проблему ви вирішуєте.

Что конкретно не умеет пэхапэ? Выдержать 1.5к рпс? Подержать гиговый «массив» в памяти?

А нафіга його в пам’яті тримати? О_о

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

WS та PHP не дружать. Концепції ортогональні.

Отстаете от жизни) Как минимум два асинхронных фреймворка уже существуют + расширение и скоро нативная асинхронновть будет, в 8 версии

Ось як нативна асинхронність прийде, тоді можна продовжити розмову. ;)

Написав трохи вище ...

В загальному, для тієї задачі, в пам’яті треба було тримати структуру даних для мегашвидкого пошуку по ній. І ця структура один раз завантажується (20-30сек) в пам’ять і має сидіти там «вічно». Після чого запити обробляються десь до 0.3мс/шт (на джаві).

1.5к rps — це 1.5к створених процесів і повністю проініціалізованих php за секунду. Вони стартують і помирають, кожен з них їсть додатково по 20Мб пам’яті мінімум. Навіть, якщо ви це все запустите — до 30гіг пам’яті воно виїсть (замість 1-2 гіга джави).

Щодо гігового масиву ... єдиний спосіб з подібними речами працювати (без джави чи редіса) — це mmap. Уявіть собі масив на гіг. В ньому потрібно робити пошук половинним діленням (тобто random access), після чого, в знайденому записі прочитати додаткові поля і повернути у відповідь. Ми робили mmap і робили масив в «справжній пам’яті». Зараз цифри не пам’ятаю, але різниця в продуктивності була на порядки. Зараз (на джаві) на запит в сервіс виконуєтсья за 0.3мс (якщо міряти в джаві) + 5-20мс на весь network stack (якщо робити тест на ab).

Якщо знаєте, якісь фінти, які у вищенаведених випвдках дозволять отримати ті ж результати на чистому php — розкажіть, буде цікаво.

Якщо що, попередній мій пост був саме на захист php. А ці випадки, які я щойно описав — то скоріше виключення, а не правило в повсякденній роботі.

Ну всё же fpm не создаёт процесс на каждый запрос, так можно настроить, но не нужно. Если очень кратко, то создаётся ограниченный пул процессов и они обрабатывают поступающие запросы, умирая раз в N сотен/тысяц запросов (по дефолту вообще не умирая). Не буду вдаваться в детали динамического режима и т.д. Больше пары сотен процессов редко когда пул задают. При этом эти сотни процессов вполне могут тысячи rps выдавать, тут зависит от железа и самого приложения.

Но да, само приложение каждый раз заново инициализируется. Вот здесь некоторые говорят что это норм, зато ни о чём думать не нужно, с чем я не согласен. Вернее нынешний fpm это хорошо, но хотелось бы и встроенный режим «неумирания». Для себя пока нашел решение в виде road runner’а.

Вот здесь некоторые говорят что это норм, зато ни о чём думать не нужно, с чем я не согласен.

От задач зависит, опыта разработчиков и сроков. Так как некоторые гонят «пятилетку в один год» — то им ничего не подойдет кроме пыха

У меня сейчас сложилось впечатление что скорость разработки для какого-то «типичного веб-проекта» не должна отличается в разы, будь то spring boot, .net, django, rails или laravel/symfony. Так как основной костяк и решение инфраструктурных задач уже есть в фреймворке. Бери да пили свою логику.

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

скорость разработки для какого-то «типичного веб-проекта» не должна отличается в разы

Если по уму и с обработкой ошибок — не должна. Если говнокодить — на пыхе будет быстрее чем на чем-то другом именно из-за того что каждый запрос начинается «с чистого листа». Ну и результат внешне будет казаться не настолько плачевным.

Перевагою php є те, що «шмат html-я» там є first class citizen.
Для нього не потрібен шаблонізатор, так він сам по собі є шаблонізатором (тут багато не погодяться, але давайте залишимо цю дискусію на інший раз).

Часто допомагає динамічна типізація (не паришся, що там в тому масиві ... головне, щоб те, що треба було на місці — це дозволяє все міняти досить швидко ... хоч на продакшині, якщо запече).

Також перевагою є те, що можна хоч 10000 різних сайтів розмістити під одним апачем і все буде літати, поки трафік не великий (на інших мовах, кожен проект — це окремий демон, окремий пул, які мають бути запущені завжди).

Щодо швидкості розробки ... важко сказати ... мож хто має живий досвід — зможе поділитися.

Так как некоторые гонят «пятилетку в один год» — то им ничего не подойдет кроме пыха

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

Нет, но достаточно чтобы не успевать контроллировать качество и с плохой обработкой ошибок

З пулом процесів — цікаво — треба подивитися.

некоторые говорят что это норм, зато ни о чём думать не нужно

Це і плюс і мінус одночасно. Це як в ноді ... однопоточність — це плюс і мінус одночасно.

для event loop-a и единовременной инициализации есть еще ReactPHP. Хоть это решение и сырое имхо и непонятно что повлечет за собой, но потыкать стоит

habr.com/post/220393

Вроде как оно и не сырое уже, но асинхронщина это совсем другой подход, привыкать нужно. А для вебсокетов пока nodejs как прокси использую, который в очередь скидывает полученные запросы, пул php-воркеров их обрабатывает и в другую очередь ответы складывает. Там уже нода рассылает обратно клиентам.

С nodejs получилось даже быстрее разобраться и всё сделать чем с reactphp, какие-то проблемы были с установкой libevent’а, уже не вспомню.

Что касается массива в памяти, который бы шарился между процессами. То в случае fpm’а смотрел бы на shared memory функции, но всё равно нужно для этой задачи придумывать свой формат хранения чтоб эффективно поиск сделать.

Или уже тогда swoole с его таблицами.

Но всё равно, это достаточно экзотические инструменты в php пока.

1.5к rps — це 1.5к створених процесів і повністю проініціалізованих php за секунду.

php-fpm, ReactPHP etc.. почитайте на досуге, если интересно)

насчет массив сложно понять, но если что можно выбрать любую желаемую структуру данных
php.net/manual/ru/book.spl.php
php.net/manual/ru/book.ds.php

для общения между процессами shared memory, хоть и лучше использовать что-то более подходящее — ZMQ, Redis и т.д.

Пишу сервис (апи) по стримингу аудио. Php позволил поднять проект в кратчайшие сроки, сделать mvp вовремя, при минимуме затрат на ресурсы.

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

Вот например коммент чувака из генезиса о том, почему они юзают пхп в новых проектах

Так, выбирая PHP, мы делали это целенаправленно — у нас отличная техническая команда именно на PHP и это наша главная сила. Если у команды есть критическая масса экспертизы, знаний и опыта в той или иной технологии/языке — выбирать что-либо новое «с нуля» не только безответственно с точки зрения инвесторов, но и потенциально губительно с точки зрения самого бизнеса и возможности его развития/масштабирования.

Билинги
Всякие трафико трекеры/распределители итд
Б2б порталы с всякими тендерами итд
Авиакомпании
Громадные платформы по дистрибюции софта
итд

Это только то с чем я стыкался/работал

Также знаю примеры когда народ бежал с экзотических языков/технологий которые должны были ваще-ваще в космос проект отправить — а на деле тормозили развитие проекта и через год приходилось Гейниальный код на ТрендовомЯзыке заменять на старый добрый РНР с норм количеством разработчиков и прогнозируемым результатом

ИМХО в 90% для интернет проектов РНР самое оно и им будет еще много лет

думаю все 99%. и причина не в том что пых какойто супер пупер. просто это язык создан специально для веба а не притянут за уши как остальные языки. Вот и все.

РНР, SalesForce, Lisp, отвертка Pozidriv, туннельный микроскоп, шнекороторный снегоочиститель, аппендектомия по Ленандеру — это все инструменты и методы, которые имеют свой спектр применений. Никто не околачивает снегоочистителем груши. Используйте отвертку по назначению и будет вам счастье.

Его актуальность на пороге 2019 вообще сомнительна.

Ага статистика, так і каже:
www.tiobe.com/tiobe-index
Пхп вже багато років у топ 10 і те, що кількість сайтів написаних на ньому більше ніж на всіх інших мовах разом взятих її підтверджує. Так що, так пхп в наш час не актуальний)))

Не путайте legacy и новые проекты. Если людям нравится

из говна и палок

лепить сайтики на вордпрессе, пожалуйста. Я через это все прошел. Знаю о чем говорю. А данный язык не выдерживает никакой конкуренции на сегодняшний день.
Сначала PSR, теперь это dou.ua/...​ta/digests/php-digest-18. Дальше думайте сами.

Можливо Ви праві, я ніколи не працював з CMS але працював з Yii2\Laravel і трохи дивися Symphony та Codeigniter. Зараз працюю з Node і знаєте, до PHP фреймворків, тому самому Express.js, ще дуже далеко рости і це можна сказати про всю екосистему JS. Також маю досвід з C# і Java — повірте там, можна гавнокодити ще й як! Хоча С# в мене колись був ван лав))) Вирішує не мова — це просто інструмент, а як ним користуватись діло Ваше.
P.S. До речі Delphi (Object Pascal), який всі так хейтять був створений Андерсом Хейлсбергом. Який пізніше став головним архітектором команди, що створювала С# і ще пізніше створив TypeScript. Це яскравий приклад того, що справа не в мові)))

працював з Yii2\Laravel і трохи дивися Symphony та Codeigniter

Прям меня описали в свое время.

Вирішує не мова — це просто інструмент, а як ним користуватись діло Ваше.

Тут не согласен. Язык влияет на мышление. Во всяком случае у меня так происходит.

Можливо Ви праві

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

Язык влияет на мышление

центральная мысль фильма
www.youtube.com/watch?v=R7pp2q68dPA

до PHP фреймворків, тому самому Express.js, ще дуже далеко рости

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

Я б, навіть сказав, що в js є ліби під все, але вони в більшості своїй до того криві, що це просто ппц! Кожен раз, коли щось ставиш з npm приходиться це допилювати, бо в умовах далеких від ідеальних — воно або взагалі не працює або працює криво. Документації нормальної майже взагалі ні в чого немає. Взяти хоча б, Реакт — там дока ще той квест (гірша мабуть тільки в mongoose). І це — топовий Реакт! Що вже казати за пакети поменше і не від таких вендорів. Я, в Tinymce, якому овер десять років і яким сотні тисяч людей користуюся, (по платній підписці!!!) постійно знаходжу баги які в них в багтрекері роками вісять і комюніті їх костилями лікує.
P.S. Останнім часом, пишу лише на JS — накипіло)))) Згадую єкосистему того самого пхп і на очі навертаються сльози радості й ностальгії ))))
P.P.S. А і, в екосистемі Node, Express рахується «великим і перегруженим непотрібним функціоналом фреймворком». Тут, під кожну задачу, є свій маленький вузькопрофільний велік (Koa, Next, etc...).

Я б, навіть сказав, що в js є ліби під все, але вони в більшості своїй до того криві, що це просто ппц!

Это же опенсорц. Бесплатно — значит криво.

Могу привести пример (для жс) — рисование графиков. Есть Highcharts — множество типов графиков, красивый из-коробки, очень настраиваемый. Но он не бесплатен (по крайней мере для коммерческих проектов). А есть Plotly.js. В нем типов графиков поменьше, выглядит средне, в репозитории могут и нахамить немного на какой-нибудь реквест. Но зато он бесплатный для чего угодно. А нужно что-то сильно кастомизировать — исходники доступны, построен поверх D3 — пилите.

Но бывают бесплатные и хорошие либы, просто их немного

А данный язык не выдерживает никакой конкуренции на сегодняшний день.

с чем именно не выдерживает?

Скажу так, зачем PHP когда есть Go? Есть JavaScript. Есть тот же .Net. На нем тоже много чего делать можно насколько я знаю. JS вообще сейчас рулит. Оно и понятно, т.к. он открывает огромные возможности для разработчика. Потуги PHP «не отcтавать» на фоне всего этого смотрятся просто жалко.
Тупо по-быстрому срубить бабла, да, PHP подходит, не спорю. Если же человек хочет развиваться как специалист, а не делать сайтики

из говна и палок

на вордпресс всю свою жизнь, тогда я бы вообще не рекомендовал бы его.
Он ничего не дает в плане развития.

> Go
разработчиков маловато ещё, да и к объектной модели привыкнуть нужно, отличичается от «современной классики» в виде java / c#, откуда и php частично содрал свою.

> JS
на любителя, разве что type script, то ещё ладно

> Есть тот же .Net

раньше net core не было и привязка к виндовой платформе, а сейчас же выглядит очень вкусно.

У php для бизнеса плюсов хватает. А вот сейчас его выбирать как первый язык, рекомендовать действительно не стал из-за перспектив и темпов роста ЗП )

разработчиков маловато ещё

Это да. Хотя наблюдается положительная тенденция, а дальше посмотрим. Мне этот язык определенно нравится.

У php для бизнеса плюсов хватает

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

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

солидарен с вами.

Коментар порушує правила спільноти і видалений модераторами.

Скажу так, зачем PHP когда есть Go? Есть JavaScript. Есть тот же .Net.

Скажу так, зачем это все если есть PHP?

Он ничего не дает в плане развития.

развития чего? Это инструмент для работы а не для програмистских понтов

зачем это все если есть PHP

Пользуйтесь наздоровье, кто вам запрещает то.

развития чего?

Себя как специалиста.

Это инструмент для работы а не для програмистских понтов

Причем здесь понты? Для понтов есть basic. Ну или С++ на крайняк.
Если вам комфортно с ним, пожалуйста, работайте. А мне с ним не комфортно, откровенно скучно.
И да

Это лишь мое субъективное мнение
Себя как специалиста.

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

А мне с ним не комфортно, откровенно скучно.

то есть качества языка PHP тут ни при чем.
То меня девчонки за специалиста считать не будут то мне скучно.

с каких пор уровень специалиста стал зависеть от названия языка

от названия? Причем здесь название?

качества языка PHP тут ни при чем

Ну может для вас и ни при чем

меня девчонки за специалиста считать не будут

Казалось бы, причем тут девчонки? Если вам с ними занятся больше нечем, как о программировании поговорить, то тут уж я ничем помочь не могу. Разве что посочувствовать...

мне скучно

угу, скучно и уныло в мире PHP стало мне. Об этом собственно и написал.

Хочешь развития — пиши на хаскеле а не на поделках типа джаваскрипта

Вы в курсе что js не язык программирования вообще?)))

Есть JavaScript

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

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

Как я понимаю дальше ВордПресс у вас не получилось, поэтому и обида к языку.

слишком толсто.

Пых это как ардуино в мире микроконтроллеров. Можно быстро и не дорого накидать прототип чего-то вполне работоспособного. Ну а когда стартап взлетит и начнется хайлоад тогда можно нанять дорих спецов и зашить логику в ASIC чип.

У меня например на php написана опенсорс система бухгалтерского и складского учета. zippy.com.ua.

способное вызвать уважение злопыхателей к этом языку?

Пусть фапают на любимый хипстерский язык дальше. Если человек ебнутый фанатик — ему любой проект будет чем-то не таким. В крайнем случае «на Х можно написать то же самое и лучше». Так зачем страдать финей

У PHP всё же ограниченная сфера применения. По скорости и потреблению памяти не сравнится с компилируемыми языками или языками с «вылизаным» JIT. По-этому что-то крутое типа высокопроизводительного web-сервера, алгоритмов (де)кодирования видео, базу данных, физический движок не сделаешь. Даже просто любые алгоритмы с большим количеством расчётов не сделаешь, а-ля серверный бекенд для какой-то realtime игры хотя бы с несколькими десятками игроков одновременно.

Его сфера — это веб. Ну а весь веб +/- одинаковый )
В больших и нагруженых проектах php является просто клеем между десятком(ами) других технологий (базы данных, очереди, кеши, поисковые движки и т.д.). И вот понимание недостатков языка и умение подобрать нужные технологии, которые позволяют обойти углы php, сделать приложение масштабируемым, тестируемым и отличает хорошего дева от «обычного php-шника».
Впрочем, это касается любого языка, всё равно будет зоопарк специализированных технологий для решения своих задач.

Что касается примеров, то посмотреть всякие highload конференции, там проектов, которые крутятся на десятках/сотнях серверов с миллионными dau хватает.

железо нынче стоит копейки дешевле докупить проца памяти и ssd диска чем платить более дорогостоящему програмисту. Да и php давно не интерпретатор.

да, фаза интерпретации в php сейчас не часто происходит, но и его виртуальная машина в jit пока не умеет.
Дедики стоят копейки, облака уже подороже, это не имеет большого значения если серверов до 30-50 (на глаз), потом уже начинаешь считать.

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

но и его виртуальная машина в jit пока не умеет

Это решится c выходом анонсируемого PHP 8 в котором будет JIT.

Я ж только за, но это никак не раньше 2020 года будет, по словам самих разработчиков.

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

В благородных целях — есть проблемы. Для этого надо разрешить пэхе слегка забаненные функции, а после этого её лучше на мир не высавлять. Ставить несколько пэх параллельно — это таки гемор в апдейте, и объяснении каждой что нехер ходить в пути по-умолчанию и искать там счастья. А докеры и прочие кубернетсы в малых проектах смотрятся неудобно по финансам. При росте — да, сразу в виртуализацию. Но при росте растут и траты на скорость железа — и тогда плевать на недостатки пэхи, когда упираются в тормоза баз данных и файловой системы.

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

IMHO язык как язык. Учитывая огромную популярность в мире (может даже и № 1, не проверял) — проще зайти на первый же ресурс халявного ПО и посмотреть чего на ней пишут. Но в общем случае ты прав — какие-то гадости из говна и палок на кшталт Фейсбука.

Сколь-либо долгоживущего рантайма пэхи пока не встречал

Уже появились решения, призванные устранить проблему бутстрапинга фреймворка и инициализации на каждый запрос: php-pm, load runner, reactphp, swoole

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

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

В идеале — это держать ОТДЕЛЬНЫЙ процесс, который отвечает за статику, а динамика уже работала бы если не в отдельных процессах, то в независимых нитях, а со статикой общалась по протоколам.

У меня на пэхе такое не выходит (может и возможно, конкретно я этого не умею), я делаю классику: объектный и ситуационный бэкэнд на Java, а уже приблуды отвечающие за общение с софтом пользователя — на чём угодно, в том числе где угодно географически.

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

Если статику держит nginx — вы лишаетесь кучи гемороя. А php так как бы не умеет by design, хотя в принципе можно вывернутся.

Олексій Пєніє так витиевато пишет, что иногда сложно понять мысль. В данном случае про статику. Желание отдавать её скриптовым языком вместо полноценного веб-сервера, странное и это очевидно всем. Вот и показалось что речь о какой то другой «статике» в контексте application-сервера.

Учу WooCommerce. Буду запускать тестовые сайты на heroku.

Судя по комментариями пых юзают только для...

То пишут люди с ограниченным кругозором и/или знаниями. Ну и всяк кулик свое болото хвалит — потому хает все остальные.

ЗЫ Топик можно закрывать. Расходимся :)

Даннинга-Крюгера все проходили. Этот путь неизбежен.

Підписатись на коментарі