Жосткое разделение админки как в yii2 advanced

Идеи и предложения

Модератор: core team

alesandro_777
Специалист
Сообщения: 77
Зарегистрирован: Ср янв 22, 2014 1:29 pm

Сообщение alesandro_777 » Ср авг 27, 2014 9:27 am

Модульная система конечно имеет свои преимущества но есть свои недочеты. Хотелось бы чтоб на фронт система тянула дане исключительно те что там запрашываются, а сейчас если глянуть что за собой тянет визов простой модели так там слижком много лишнего. В yii2 кажісь значительно оптимизирован АР поетому можно будет отказатся от ДАО. Сейчас загрузка страницы на АР при вызове простой модели расходует 12-14 МБ, а на ДАО 5-6 МБ что в два раза меньше, но в YII2 смотрел пбудет примерно 6-8 то приемлемо. Расход памяти на моем проекте критичем. Чтоб вывести например календарь матчей турнира (сайт спортивний) нужно обращатса черз АР к 5-6 связаним таблицам что через АР очень ресурсозатратно. А так главний вопрос когда начнутся роботи на yii2. Понимаю что она еще бета но многие уже на ней работают внося правки по ходу разработки.

Аватара пользователя
xoma
Администратор
Сообщения: 1971
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Ср авг 27, 2014 10:34 pm

Прежде всего, спасибо за ваше предложение +)

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

Можете подсказать, что по вашему мнению лишнее ?

"Расход памяти на моем проекте критичем"

Может имеет смысл кешировать, например в редис или мемкеш ?

" А так главний вопрос когда начнутся роботи на yii2"

Пока не будет официального релиза - работы будут идти очень и лчень медленно, Yii2 развивается и то, что мы пишем сами потом появляется в составе фреймворка. Так что мы не спешим.
отследить-посылку.рф - дружит с "Юпи!", следит за посылками!

alesandro_777
Специалист
Сообщения: 77
Зарегистрирован: Ср янв 22, 2014 1:29 pm

Сообщение alesandro_777 » Чт авг 28, 2014 12:13 pm

Стандартная страница пользователей ЮПИ 68 Time 757 ms Memory 13.9 MB DB 6 6 ms Дание из дебаг панели, если переделать с АР на ДАО Memory 5.5 MB. Потребление памяти уменьшилось почти в 2 раза, кеширование на память никак не влияет.
Пример вивода обетка новости зачем на фронте дание о (fileInstanceName, onbeforevalidate, generateFileName yupecomponentsbehaviorsFileUploadBehavior и.т.д)

Код: Выделить всё

CActiveDataProvider Object ( [modelClass] => News [model] => News Object ( [cacheKey] => [_new:CActiveRecord:private] => [_attributes:CActiveRecord:private] => Array ( ) [_related:CActiveRecord:private] => Array ( ) [_c:CActiveRecord:private] => [_pk:CActiveRecord:private] => [_alias:CActiveRecord:private] => t [_errors:CModel:private] => Array ( ) [_validators:CModel:private] => [_scenario:CModel:private] => [_e:CComponent:private] => Array ( [onbeforevalidate] => CList Object ( [_d:CList:private] => Array ( [0] => Array ( [0] => yupecomponentsbehaviorsFileUploadBehavior Object ( [attributeName] => image [fileInstanceName] => [image] => [minSize] => 0 [maxSize] => 5368709120 [types] => jpg,jpeg,png,gif [scenarios] => Array ( [0] => insert [1] => update ) [requiredOn] => [fileName] => Array ( [0] => News Object *RECURSION* [1] => generateFileName ) [uploadPath] => news [_newFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_oldFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_enabled:CBehavior:private] => 1 [_owner:CBehavior:private] => News Object *RECURSION* [_e:CComponent:private] => [_m:CComponent:private] => ) [1] => beforeValidate ) ) [_c:CList:private] => 1 [_r:CList:private] => [_e:CComponent:private] => [_m:CComponent:private] => ) [onbeforesave] => CList Object ( [_d:CList:private] => Array ( [0] => Array ( [0] => yupecomponentsbehaviorsFileUploadBehavior Object ( [attributeName] => image [fileInstanceName] => [image] => [minSize] => 0 [maxSize] => 5368709120 [types] => jpg,jpeg,png,gif [scenarios] => Array ( [0] => insert [1] => update ) [requiredOn] => [fileName] => Array ( [0] => News Object *RECURSION* [1] => generateFileName ) [uploadPath] => news [_newFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_oldFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_enabled:CBehavior:private] => 1 [_owner:CBehavior:private] => News Object *RECURSION* [_e:CComponent:private] => [_m:CComponent:private] => ) [1] => beforeSave ) ) [_c:CList:private] => 1 [_r:CList:private] => [_e:CComponent:private] => [_m:CComponent:private] => ) [onbeforedelete] => CList Object ( [_d:CList:private] => Array ( [0] => Array ( [0] => yupecomponentsbehaviorsFileUploadBehavior Object ( [attributeName] => image [fileInstanceName] => [image] => [minSize] => 0 [maxSize] => 5368709120 [types] => jpg,jpeg,png,gif [scenarios] => Array ( [0] => insert [1] => update ) [requiredOn] => [fileName] => Array ( [0] => News Object *RECURSION* [1] => generateFileName ) [uploadPath] => news [_newFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_oldFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_enabled:CBehavior:private] => 1 [_owner:CBehavior:private] => News Object *RECURSION* [_e:CComponent:private] => [_m:CComponent:private] => ) [1] => beforeDelete ) ) [_c:CList:private] => 1 [_r:CList:private] => [_e:CComponent:private] => [_m:CComponent:private] => ) [onafterfind] => CList Object ( [_d:CList:private] => Array ( [0] => Array ( [0] => yupecomponentsbehaviorsFileUploadBehavior Object ( [attributeName] => image [fileInstanceName] => [image] => [minSize] => 0 [maxSize] => 5368709120 [types] => jpg,jpeg,png,gif [scenarios] => Array ( [0] => insert [1] => update ) [requiredOn] => [fileName] => Array ( [0] => News Object *RECURSION* [1] => generateFileName ) [uploadPath] => news [_newFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_oldFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_enabled:CBehavior:private] => 1 [_owner:CBehavior:private] => News Object *RECURSION* [_e:CComponent:private] => [_m:CComponent:private] => ) [1] => afterFind ) ) [_c:CList:private] => 1 [_r:CList:private] => [_e:CComponent:private] => [_m:CComponent:private] => ) ) [_m:CComponent:private] => Array ( [imageUpload] => yupecomponentsbehaviorsFileUploadBehavior Object ( [attributeName] => image [fileInstanceName] => [image] => [minSize] => 0 [maxSize] => 5368709120 [types] => jpg,jpeg,png,gif [scenarios] => Array ( [0] => insert [1] => update ) [requiredOn] => [fileName] => Array ( [0] => News Object *RECURSION* [1] => generateFileName ) [uploadPath] => news [_newFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_oldFile:yupecomponentsbehaviorsFileUploadBehavior:private] => [_enabled:CBehavior:private] => 1 [_owner:CBehavior:private] => News Object *RECURSION* [_e:CComponent:private] => [_m:CComponent:private] => ) ) ) [keyAttribute] => [_criteria:CActiveDataProvider:private] => CDbCriteria Object ( [select] => * [distinct] => [condition] => (t.status = :status) AND (t.lang = :lang) [params] => Array ( [:status] => 1 [:lang] => ru ) [limit] => 10 [offset] => -1 [order] => t.creation_date DESC [group] => [join] => [having] => [with] => Array ( [0] => user ) [alias] => [together] => [index] => [scopes] => [_e:CComponent:private] => [_m:CComponent:private] => ) [_countCriteria:CActiveDataProvider:private] => [_id:CDataProvider:private] => News [_data:CDataProvider:private] => [_keys:CDataProvider:private] => [_totalItemCount:CDataProvider:private] => [_sort:CDataProvider:private] => [_pagination:CDataProvider:private] => [_e:CComponent:private] => [_m:CComponent:private] => )

Попутно вопрос как много кода придетса переписывать при переходе на ЮПИ 2?

Аватара пользователя
xoma
Администратор
Сообщения: 1971
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Чт авг 28, 2014 12:48 pm

Кеширование еще как влияет на память - если данные в кеше Вы вообще ни к AR ни DAO не обращаетесь, соответственно нет запросов к базе данных и нет создания цепочки объектов в AR. Мета-инофрмация объекта, которую Вы привели - она ничтожна мала. Если идти таким путем - то тогда лучше вообще mysql_query использовать и отказаться от ООП. Объекты так или иначе занимают место в памяти.
отследить-посылку.рф - дружит с "Юпи!", следит за посылками!

Аватара пользователя
xoma
Администратор
Сообщения: 1971
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Чт авг 28, 2014 12:49 pm

"Попутно вопрос как много кода придетса переписывать при переходе на ЮПИ 2?"

Примерно столько же как при переходе с Yii1 на Yii2, а именно - почти все +)
Это будут совершенно разные продукты.
отследить-посылку.рф - дружит с "Юпи!", следит за посылками!

Аватара пользователя
xoma
Администратор
Сообщения: 1971
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Чт авг 28, 2014 1:03 pm

"Стандартная страница пользователей ЮПИ 68 Time 757 ms Memory 13.9 MB DB 6 6 ms Дание из дебаг панели"

Сейчас в Юпи все что касается фронта сделано только чтобы было. Нигде не используется кеширование, во многих местах используются CActiveRecordDataProvider (что с моей точки зрения, для фронта не приемлемо). Для хайлоад проектов мы рекомендуем писать фронтальную часть к модулям самостоятельно (DAO, кеш, оптимизация) и т.д.
отследить-посылку.рф - дружит с "Юпи!", следит за посылками!

alesandro_777
Специалист
Сообщения: 77
Зарегистрирован: Ср янв 22, 2014 1:29 pm

Сообщение alesandro_777 » Чт авг 28, 2014 2:54 pm

xoma писал(а):Для хайлоад проектов мы рекомендуем писать фронтальную часть к модулям самостоятельно (DAO, кеш, оптимизация) и т.д.

Вот поетому и біл вопрос о жостком разделении админки и фронта чтоб в одной модели не писать АР для админки и ДАО для фронта.
Спасибо за содержательний ответ. Пока просто не совсем разобрался с кешырованием, как и где его лучше реализовывать в ЮПИ в контроллере, модели и по какой схеме.

koftikes
Новенький
Сообщения: 5
Зарегистрирован: Пн авг 25, 2014 3:51 pm

Сообщение koftikes » Чт сен 11, 2014 3:26 pm

Так же поддерживаю выбор версии advanced для реализации Yupe 2. Сказать по правде, я лично думал, что именно она и будет использоваться.
Сам я с Yii работаю не так давно, так получилось, что мне достался на доработку проект основанный на Yiinitializr.
Сначала возникали кое какие трудности, но потом после того как разобрался, я просто не представляю себе работу без разделения на backend и frontend.

На сколько я понимаю, даже сами разработчики взяли эту идею за основу при разработке Yii 2 advanced, поэтому однозначно нужно использовать этот функционал. ИМХО.

Также не стоит гнаться за совместимостью между Yupe и Yupe2, логичнее оставить тех поддержку и закрытие багов Yupe на какое то время и свободно переходить на разработку Yupe 2.
Так например когда то сделала команда разработчиков Joomla при переходе с 1.5 на 2.5 и 3.0.
Как показывает практика в переходе с одной версии на другую заинтересованы не многие заказчики, и когда об этом возникает вопрос, то проще переписать все по новой чем пытаться обновить + это дополнительный заработок для разработчиков.
Опять таки, ИМХО.

Аватара пользователя
xoma
Администратор
Сообщения: 1971
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Чт сен 11, 2014 3:54 pm

Совместимости, скорее всего, и не будет +)

Юпи2 будет совершенно новым проектом.

Как вы предлагаете реализовывать модульность при условии что модуль содержит как админскую, так и фронтальную часть ?
Модуль автономен (в теории) и зависит только от других модулей.
отследить-посылку.рф - дружит с "Юпи!", следит за посылками!

koftikes
Новенький
Сообщения: 5
Зарегистрирован: Пн авг 25, 2014 3:51 pm

Сообщение koftikes » Пт сен 12, 2014 3:06 pm

xoma писал(а):Как вы предлагаете реализовывать модульность при условии что модуль содержит как админскую, так и фронтальную часть ?


Сам принцип автономности модуля сохранен как в Yii2 так и в Yiinitializr.

На данный момент у меня логика следующая:
в backend - расположены модули которые отвечают за работу только с админкой, в frontend только с фронтом сайта.
Относительно моделей логика такая:
*. Первостепенно используется модель в /backend/modules/папка_модуля/models/*
*. Если ее нет то используется из /backend/models/* и она также доступна для контролеров /backend/controllers/*.
*. Если нет в /backend/models/*, используется из /common/models/*, данные модели являются доступными как для backend, так и для frontend

Я не стану описывать процессы установки и обновления взаимосвязей по нескольким причинам:
1. Ваш уровень в разы выше моего, это следует также и из того что вы создали инсталяторы для модулей, которые в Yii в принципе отсутствуют, в общем создали готовую CMS.
2. Также у вас есть возможность подключить или отключить модули. Создание и подключение модулей я делаю вручную, в миграциях я еще не разобрался и пока их не использую.

koftikes
Новенький
Сообщения: 5
Зарегистрирован: Пн авг 25, 2014 3:51 pm

Сообщение koftikes » Чт окт 02, 2014 11:37 pm

Не так давно вышел RC Yii2 - http://habrahabr.ru/post/238447/
Мысли по поводу использования? Смотрели, думали? Будет разделение?

Аватара пользователя
xoma
Администратор
Сообщения: 1971
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Чт окт 02, 2014 11:39 pm

koftikes писал(а):Не так давно вышел RC Yii2 - http://habrahabr.ru/post/238447/
Мысли по поводу использования? Смотрели, думали? Будет разделение?


Пока не будет придумано красивое решение как сделать так, чтобы и фронтальная часть и админка были внутри одного модуля (а не разными модулями для разных приложений) использование шаблона advanced не будет.
отследить-посылку.рф - дружит с "Юпи!", следит за посылками!

Аватара пользователя
Dark_Cs
core team
Сообщения: 121
Зарегистрирован: Пт окт 25, 2013 2:34 pm

Сообщение Dark_Cs » Вс дек 14, 2014 1:02 pm

разделение на front/back, конечно, нужная и удобная вещь, но, мне кажется нужно не само приложение строить по шаблону advanced, а модули для него. Что-то типа такой структуры:

Код: Выделить всё

- app
- - config
- - modules
- - - yupe
- - - - backend
- - - - - controllers
- - - - - models
- - - - - views
- - - - common
- - - - - models
- - - - console
- - - - - commands
- - - - - models
- - - - frontend
- - - - - controllers
- - - - - models
- - - - - views
- - runtime
- - themes
- vendor
- web


Кто-нибудь реализовывал подобную структуру в модулях?

Хотя, может быть, и для самого приложения тоже нужно использовать advanced.
Последний раз редактировалось Dark_Cs Вс дек 14, 2014 1:44 pm, всего редактировалось 1 раз.

Аватара пользователя
xoma
Администратор
Сообщения: 1971
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Пн дек 15, 2014 1:31 pm

Идея интересная, стоит попробовать сделать так. Вот только пока не могу представить как будет происходит наполнение каталога vendor. Хотя если у каждого модуля свой composer.json то, наверное, получится.
отследить-посылку.рф - дружит с "Юпи!", следит за посылками!

mikspark
core team
Сообщения: 41
Зарегистрирован: Пн янв 28, 2013 3:35 pm
Откуда: Казахстан, Уральск
Контактная информация:

Re: Жосткое разделение админки как в yii2 advanced

Сообщение mikspark » Вт фев 17, 2015 12:56 pm

Если модули будут оформлены как Yii2 расширения, то у каждого будет свой composer.json


Вернуться в «Идеи и предложения (yupe 2.x)»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость