LINUX.ORG.RU

А что если сменить php на что либо другое?

 


0

1

В общем php меня всем устраивает почти. Кроме того что у него нет многопоточности, ну и в еще ряде случаев он мягко говоря тормоз, но это для моих задач

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

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

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



Последнее исправление: spiritkhl (всего исправлений: 1)
Ответ на: комментарий от baverman

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

Так это опять проблема архитектуры, а не языка.

AlexVR ★★★★★
()

Праздный вопрос: что насчёт «комбинированных пректов», как то морда на PHP логика на питоне. Как подобное реализуемо, если рационально?
Академический интерес.

Yustas ★★★★
()
Ответ на: комментарий от psp13

PHP используется не только в веб приложения но и в скриптах выполняющих какую то работу - парсинг, кроулинг.

Я для этого использую gearman + pcntl_fork.

KRoN73 ★★★★★
()
Ответ на: комментарий от helios

Нужно использовать только те инструменты, которые нравятся, иначе испишешься. Если ты программируешь по 6-10 часов в день, глупо это делать на том, что тебе неприятно.

Вот она, разница в подходах :) Я считаю, что если программируешь по 6-10 часов в день, то нужно срочно строить механизмы, которые позволят программировать по 2-3 часа в день, делая тоже самое :)

Для работы по 6-10 часов в день я слишком ленив как-то...

KRoN73 ★★★★★
()
Ответ на: комментарий от Yustas

Праздный вопрос: что насчёт «комбинированных пректов», как то морда на PHP логика на питоне. Как подобное реализуемо, если рационально?

Академический интерес.

Интересная реализация — это Quercus. PHP на JVM. Можно писать морду на PHP, а логику и потроха — на Java. Жаль только, что готовые решения есть только для Resin и Tomcat. Под PlayFramework пока никто не прикрутил, а самому заняться — руки не доходят. А то процесс переезда части моих проектов под PlayFramework был бы и простым и оправданным :)

KRoN73 ★★★★★
()
Ответ на: комментарий от AlexVR

Так это опять проблема архитектуры

ИЧСХ, процент PHP-разработчиков не думающих об архитектуре, просто до неприличия высок.

baverman ★★★
()
Ответ на: комментарий от KRoN73

Я считаю, что если программируешь по 6-10 часов в день, то нужно срочно строить механизмы, которые позволят программировать по 2-3 часа в день, делая тоже самое :)

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

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Это можно делать абсолютно на любом языке

Безусловно.

KRoN73 ★★★★★
()
Ответ на: комментарий от Yustas

Праздный вопрос: что насчёт «комбинированных пректов», как то морда на PHP логика на питоне. Как подобное реализуемо, если рационально?

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

lech
()
Ответ на: комментарий от TDrive

Это можно делать абсолютно на любом языке.

Изобретая по пути тормозной и глючный Лисп.

anonymous
()
Ответ на: комментарий от KRoN73

Я считаю, что если программируешь по 6-10 часов в день, то нужно срочно строить механизмы, которые позволят программировать по 2-3 часа в день, делая тоже самое :)

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

lech
()
Ответ на: комментарий от lech

В Ruby есть хорошие механизмы метапрограммирования, чего не скажешь о PHP

В моей практике подобное — это процентов пять всей работы. Так что не принципиально. Я больше потрачу времени, убеждая заказчика брать выделенный сервер вместо шареда и админа на оклад для обслуживания этого сервера :)

Так что если бы ты использовал Ruby, может быть и по полчаса в день всего работал.

Это вряд ли. YAML/HAML с которыми я работаю сейчас процентов 50 времени, что в PHP, что в Ruby одинаковы. Структура БД, с которой я работаю процентов 30 времени — тоже :)

Я сейчас пишу очень мало чистого PHP-кода… И там, где его пишу, метапрограммирование мне нифига не поможет.

А я этот момент могу особо оценить, так как — старый фортер. И метапрограммирование (настоящее!) — это моя старая любовь :D

KRoN73 ★★★★★
()

Давно пора сменить эту отсталую технологию на что-то более современное, например, python! Зарплата среднего python-программиста на 40% выше, чем пыхпера.

anonymous
()
Ответ на: комментарий от psp13

раздался голос пхп-макаки со стороны параши

anonymous
()
Ответ на: комментарий от KRoN73

В области крупных проектов всё равно всех рвёт Java.

Скорость разработки на Java vs Python, даже с Play! в разы ниже. В моём случае на порядок ниже, т.е. в 10 раз, но меня тошнит от этих жабских идиотских IDE, а без них много букав набирать.

Snorg
()
Ответ на: комментарий от Snorg

Скорость разработки на Java vs Python, даже с Play! в разы ниже.

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

anonymous
()
Ответ на: комментарий от Snorg

Скорость разработки на Java vs Python, даже с Play! в разы ниже. В моём случае на порядок ниже, т.е. в 10 раз

Ниже, но не в 10 раз. Вообще, скорость набора меня вообще никогда не лимитировала. И тут вопрос больше не скорости ввода, а чисто психологический. Лишнее писать ломает, когда где-то можно без него. Но после Форта все остальные языки кажутся всё равно одинаково многословными :D

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Дело, конечно, не в скорости ввода, но в инструментах. Интроспекция в питоне позволяет сделать dir(object)/help(object.method) и не лезть лишний раз в документацию, в жабе - только IDE. Где мне нужно бросить исключение, я в одну строку пишу class CustomException(Exception): pass и щаслив, в жабе - делай новый файл, положи его в правильный пакет...короче, лучше в IDE. И так там везде.

Snorg
()
Ответ на: комментарий от KRoN73

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

KivApple ★★★★★
()
Ответ на: комментарий от KRoN73

Тут как то sorhed в жж убеждал что жаба встала в развитии и писать лучше на scala. Подробностей и нюансов не помню.

Hertz ★★★★★
()
Ответ на: комментарий от Hertz

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

а в коде на других языках все плагины уже висят в памяти, всех их структуры данных инициализированы, соединение к БД опять же постоянно. Остаётся только парсить запросы и генерить HTML.

KivApple ★★★★★
()
Ответ на: комментарий от Hertz

Тут как то sorhed в жж убеждал что жаба встала в развитии и писать лучше на scala

Для меня Java — это в первую очередь инфраструктура JVM, а не конкретный язык :) Там легко писать на том, что нравится, порождая совместимый с любителями других предпочтений код.

KRoN73 ★★★★★
()
Ответ на: комментарий от KivApple

это не отменяет необходимость инициализации скрипта

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

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

На дворе XXI век, а Вы всё пользуетесь оценками конца 1990-х гг, когда установление соединения с БД занимало ощутимое время.

Остаётся только парсить запросы и генерить HTML.

Остаётся ещё такая «мелочь», как брать данные из БД. Которая и жрёт львиную долю времени обработки.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

На дворе XXI век, а Вы всё пользуетесь оценками конца 1990-х гг, когда установление соединения с БД занимало ощутимое время.

Это не единственный шаг. Рассмотрим общую схему работы более-менее продвинутой CMS на PHP:

1. Подключить файлы framework'а

2. Прочитать настройки БД

3. Подключиться к БД

4. Получит список необходимых для загрузки плагинов из БД и их настройки

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

6. Загрузить шаблон документа и распарсить его.

7. Распарсить запрос, передать плагинам данные. Они получают данные из БД и собственно генерят страницу.

В другом языке первые 6 пунктов выполняются только 1 раз.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

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

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

Рассмотрим общую схему работы более-менее продвинутой CMS на PHP

Я и говорю — оценки десятилетней давности :) «Прочитать настройки БД…» — это даже упоминать смешно, доли микросекунд. Единственное реально затратное в этом списке — это загрузка компонентов фреймворка. Но тут, если гнаться за скоростью, существует много методов оптимизации. И нормальный фреймворк легко обеспечивает такое сотню раз в секунду. И на 100% распараллеленно, не имея никаких вопросов GIL или числа нод. Сколько нужно fcgi-процессов, столько и будет крутиться. Остальные пункты — совсем не серьёзно :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KivApple

И чем сложнее и фичастее система, тем дольше выполняется инициализация.

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

Ну и когда сервер под большой нагрузкой счёт идёт на доли секунды генерации.

Тесты. Практические тесты :)

KRoN73 ★★★★★
()
Ответ на: комментарий от yurikoles

Надо будет посмотреть, кстати, как заметил, многие perl-куны дружат с javascript. Думаю на вкус, если лизнуть, как изюм.

anonymous
()
Ответ на: комментарий от anonymous

Да, Pony::Object - моих рук дело.
Ниже приведена ссылка на js framework - к нему я отношения не имею.

helios ★★★★★
()
Ответ на: комментарий от Hertz

Тут как то sorhed в жж убеждал что жаба встала в развитии и писать лучше на scala.

Ты только своему архитектору это не говори - без зубов останешься.

anonymous
()
Ответ на: комментарий от anonymous

А что, scala прохая штука? Мельком глянул, от жабы на глаз ничем не отличается. Та же семантика, тот же синтаксис и среда исполнения О.о

Hertz ★★★★★
()

я думаю стоит взять и попробовать - а потом рассказать нам. У вас очень много приятных вариантов миграции ;) Я бы сейчас на вашем месте в паралель смотрел на руби и пайтон. А что вам от многопоточности нужно?

pechorin
()
Ответ на: комментарий от Hertz

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

anonymous
()
Ответ на: комментарий от KRoN73

Во-во, хотя я не фанат пхп, но точно могу сказать, что в нормальном HL успокорение инициализации фреймворк-стека нихрена особо не даст :) А вот оптимизация/уничтожение лишних запросов к базе - будет гораздо эффективнее.

pechorin
()
Ответ на: комментарий от pechorin

Надо учить что-то типа ruby/питон + erlang :)

Для стартапов можно. На чём они написаны, никого не волнует - всё равно помрут.

Веб-программистам надо скинуться на «Социальная сеть 2», тогда работы всем хватит.

anonymous
()

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

C#. Как по мне, так самый продвинутый C/Cpp-like потомок на текущий момент. В комплекте: 1. отличная IDE (Visual Studio) с возможностью разработки как десктопных приложений, так и веб с модным ныне MVC паттерном. + встроенный пакетный менеджер для либ. 2. полноценная стандартная либа с адекватными именами функций. Никаких glob или println. 3. логичный name convention.

Многопоточность, естественно, есть в стандартной либе.

Из Visual Studio Publish сайта делается одним кликом с поддержкой множественных конфигураций из коробки.

Единственное НО - непонятна судьба mono, т.к. больше не развивается активно. А это значит, не ясна дальнейшая судьба дешевого линукс-хостинга под asp.net mvc проекты.

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

d9d9 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.