[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Принципы клиент-серверного приложения
Страницы: 1, 2
sergeiss
Периодически на форуме возникают холивары по поводу ООП. Самые свежие, на момент создания данной темы, это вот эта http://phpforum.su/index.php?showtopic=83830&hl= и эта http://phpforum.su/index.php?showtopic=83858&hl= темы.
Цитата
Если кратко, то основная суть проблемы (на мой взгляд wink.gif) сводится к одной простой истине: подход ООП позволяет делать более удобно сложные приложения, не-ООП подход позволяет делать более быстрые приложения. Вместе их объединить нереально. Ускорение работы за счет более быстрого железа не является выходом из положения.

Предлагаю это взять как аксиому, так как остальные преимущества/недостатки ООП в данном случае меня мало интересуют. А уменьшение скорости скриптов при ООП-подходе не отрицается и его апологетами.
Лично мне чем не нравится ООП в ПХП, так это именно тем, что делаешь-делаешь, а живет всё эта сложность непродолжительное время. Хотя загружается относительно долго.

Итак, задача простая: используя ООП на серверной стороне, в ПХП, существенно ускорить работу. Попробуем найти решение. Чтобы и "волки сыты, и овцы целы".

Вопрос первый и основной: почему ООП "тормозит"? Ответ достаточно очевидный: грузится много файлов, не все из которых обязательны именно для данной задачи.
Вопос второй: как ускорить? Предлагаемые решения на данный момент: кэшировать результаты и/или располагать данные и скрипты в виртуальном диске в оперативной памяти.
Кэшированием результатов занимаются если не все, то многие CMS/фреймворки. Но всё равно это не панацея.

А что предлагаю я? Пусть у нас будет мега-мощное ядро нашего приложения, которое запускается в виде демона. Написанного на ПХП. При запуске скрипта, он берет данные из кук и сессий (если необходимо), а также ПОСТ/ГЕТ параметры и отправляет их демону. Который запускает новый тред (thread). В котором обрабатывает всё.
В чем тут временной (и другой) выигрыш?
* Все наши сложные объекты и их взаимосвязи грузятся 1 (один) раз и живут в виде демона. Нам их не надо грузить постоянно!
* При запуске скрипта происходит минимум дисковых операций
* Если существуют некие общие данные, например на сайте есть чат, то они быстродоступны всем трэдам.
* Можно еще использовать winsocket для организации максимально динамичных приложений


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

Возможно, что я отстал от жизни, и какие-то языки, но не ПХП, уже работают по этому принципу? Либо, возможно, в ПХП уже где-то это реализуется, а я просто "изобретаю велосипед"? Если да, то прошу ткнуть меня "мордой лица" smile.gif

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

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
paul85
sergeiss, зачем использовать в качестве демона PHP? Тогда уж C/C++. А то получается опять полумера.

К тому же зачем такая дикая мощность? Здесь недавно пришли к выводу, что современному рынку нужна скорость выхода в продакшн, а не скорость выполнения на сервере.

Вот еще есть такая вещь, как фреймворк Phalcon. Не то?
waldicom
А APC уже не подходит?

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
chee
Цитата (sergeiss @ 3.11.2014 - 00:17)
почему ООП "тормозит"

ООП не тормозит, а потребляет БОЛЬШЕ памяти и вычислителительных ресурсов.

То что это все живет один раз, то это всё уже довно решили, Опкэшами, мемкэшами, автозагрузкой классов(это про то что загружаются лишние файлы).

ООП может тормозить только в одном случае, когда выбрана неправильная архитектура и на производительность положен болт. smile.gif

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
sergeiss
Цитата (paul85 @ 3.11.2014 - 01:34)
Тогда уж C/C++. А то получается опять полумера.

Часть на Си, часть на ПХП? Это неправильно будет smile.gif Слишком много языков.

Цитата (paul85 @ 3.11.2014 - 01:34)
Вот еще есть такая вещь, как фреймворк Phalcon. Не то?

Может и "то", не знаю. Я для того и тему поднял, чтобы узнать мнения, получить знания...

Цитата (waldicom @ 3.11.2014 - 02:06)
А APC уже не подходит?

Вас ист А-Пэ-Цэ?

Цитата (chee @ 3.11.2014 - 02:10)
ООП не тормозит, а потребляет БОЛЬШЕ памяти и вычислительных ресурсов.

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

Цитата (chee @ 3.11.2014 - 02:10)
То что это все живет один раз, то это всё уже давно решили

Вот я и предлагаю посмотреть на это с еще одной стороны.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
sergeiss
Цитата (sergeiss @ 3.11.2014 - 02:26)
Цитата (paul85 @ 3.11.2014 - 01:34)
Вот еще есть такая вещь, как фреймворк Phalcon. Не то?

Может и "то", не знаю.

Посмотрел - нет, не то, что я имею ввиду. Фалкон - это все равно фреймворк ПХП, пусть и ускоренный по сравнению со многими другими.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
waldicom
Цитата (sergeiss @ 2.11.2014 - 23:26)
Цитата (waldicom @ 3.11.2014 - 02:06)
А APC уже не подходит?

Вас ист А-Пэ-Цэ?

Даи ист дас:
http://en.wikipedia.org/wiki/List_of_PHP_a...Cache_.28APC.29

о я я? smile.gif


_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Invis1ble
sergeiss
ты реально отстал, да smile.gif из тех, что я пользовался за свою относительно недолгую практику таким подходом пользуется node.js и, если не ошибаюсь, python
при этом, я целенаправленно не искал языки с таким подходом, скорее всего другие более-менее приближенные к web работают так же, это пых просто такой особенный biggrin.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

YVSIK
sergeiss
дожили laugh.gif теперь уже не устраивает земные вещи,
теперь подавай супер-пупер, а сало между-прочим русское едим tongue.gif


_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
vital
APC/XCache/Zend Cache + PHPDaemon.


_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
sergeiss
Цитата (YVSIK @ 3.11.2014 - 11:24)
теперь подавай супер-пупер, а сало между-прочим русское едим

Не знаю, зачем ты его упомянул, но вот сало я вообще никакое не ем. Потому что от любой жирной еды меня плющит и колбасит. Холицестит, вроде как, называется. Так что я стараюсь питаться правильной и здоровой пищей smile.gif

Цитата (Invis1ble @ 3.11.2014 - 07:13)
sergeiss
ты реально отстал, да

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

А тему создал для того как раз, чтобы узнать новое. Видишь вот, названия-то в основном знакомые, но если я не работал с чем-то, то и не знаю тонкостей работы. Оказывается, "изобретать велосипед" не надо smile.gif Только помечтал, а уже технологии готовые, оказывается, под рукой есть rolleyes.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Invis1ble
Цитата
Если бы ты посмотрел, какой код мне приходится сейчас разгребать, приводить "в божеский вид", дополнять и расширять... Какое там ООП??? Там просто был бы обычный "императив" нормальный, и то бы "слава богу".

знаем, плавали smile.gif как-то раз разгребал код в ~30к строк в одном файле index.php smile.gif занятие не из приятных, даже тему тогда создал. Хватило меня на 1 рабочий день, после выполнения ТЗ отказался дальше работать, нервы дороже

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

sergeiss
Цитата (Invis1ble @ 3.11.2014 - 14:29)
как-то раз разгребал код в ~30к строк в одном файле index.php

А как тебе 260К в файле ajax.php (название само за себя говорит), при том, что за один вызов используется только одна функция из многих? Там вообще было почти 400К, я его потихоньку "разбираю на части", т.е. на отдельные скрипты. Не только этим занимаюсь, естественно. Просто в процессе решения каких-то задач выношу то, с чем работаю, в эти самые отдельные скрипты.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Invis1ble
Цитата (sergeiss @ 3.11.2014 - 18:04)
Цитата (Invis1ble @ 3.11.2014 - 14:29)
как-то раз разгребал код в ~30к строк в одном файле index.php

А как тебе 260К в файле ajax.php (название само за себя говорит), при том, что за один вызов используется только одна функция из многих? Там вообще было почти 400К, я его потихоньку "разбираю на части", т.е. на отдельные скрипты. Не только этим занимаюсь, естественно. Просто в процессе решения каких-то задач выношу то, с чем работаю, в эти самые отдельные скрипты.

user posted image

smile.gif

ты молодец
на самом деле у меня были проблемы не столько наверное с восприятием самого кода, сколько с физической невозможностью самой работы, ибо у меня на ноуте в IDE было слайд-шоу и задержки по 10 секунд при работе с тем файлом (ноут старый был) smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

paul85
Цитата (sergeiss @ 3.11.2014 - 13:47)
Там просто был бы обычный "императив" нормальный, и то бы "слава богу".

А вы его уважаете? Ну кодера того? )))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.