@bitrixfordevelopers

Страница 139 из 1492
Бернгардт
13.09.2016
18:11:35
Dmitry
13.09.2016
18:12:15
Обработчик и дело в шляпе)
<врчун>так каждый может</ворчун>

Mark
13.09.2016
18:12:45
Ахаха, почему не годится?

Google
Dmitry
13.09.2016
18:13:14
Лень

Бернгардт
13.09.2016
18:13:43
<врчун>так каждый может</ворчун>
Есть другой вариант, платишь мне 100 млн и он у тебя сам появляется. Поверь -так уже может не каждый??

Mark
13.09.2016
18:14:00
Это да, причина

Я про лень

Сделаю за 10 млн

Dmitry
13.09.2016
18:14:53
10 млн. - это достаточное лекарство от лени )))

за 10 лямов я вручную поисковый индекс наберу в ноутпаде

Бернгардт
13.09.2016
18:15:48
Сделаю за 10 млн
а вот демпинговать нехорошо... и вообще - я могу представить человека который 10 лямов выложит, так возможно не каждый сможет, но вероятность имеется а вот 100лямов за такую глупость - он будет уже стопудово уникален и сможет сказать - вот так не сможет никто :)

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

Dmitry
13.09.2016
18:16:51
поисковый индекс для собственного поиска битрикса

Бернгардт
13.09.2016
18:17:28
слабенько.. яж еще только цифры озвучил, а вот валюту еще нет ) так что как знать-как знать)

Mark
13.09.2016
18:18:17
Да, так получается, что 130 тр и правда мелкая зп, ахах

Dmitry
13.09.2016
18:19:13
Let's holy war begin!!!

Google
Mark
13.09.2016
18:29:11
Вопрос на засыпку. Что делать, если нужна сортировка по св-ву связанного элемента иблока, связанного элемента иблока. То есть связь третьего уровня. Например: Есть иблоки: товары, бренды и поставщики. У поставщиков есть свво "город". У товаров есть свво бренд(привязка), а у брендов есть свво поставщик(привязка). А задача отсортировать товары по городам поставщиков. Как это сделать?

Mark
13.09.2016
18:29:59
Пример кода

Dmitry
13.09.2016
18:31:15
сначала ОРМ объекты делаешь для bx_element_property_sXXX потом джоинишь их в секции runtime и сортируй фильтруй как хош

Бернгардт
13.09.2016
18:31:28
а для этого селекта собрать просто sql совсем-совсем нельзя? и предварительный перерасчет сделать нельзя единоразово, надо именно несколько таблиц тянуть штатными не очень быстрыми методами? хм

Mark
13.09.2016
18:32:31
Джоны и раньайм - убьют весь Хайлоад на месте

Просто скул можно, но это на крайняк. Опять же Джоны.

Бернгардт
13.09.2016
18:33:24
ага, штатка убьет.. хотя если данных мало или кеш долгий - оно наверное даже поработает

Dmitry
13.09.2016
18:33:28
Джоны и раньайм - убьют весь Хайлоад на месте
сфигали? наоборот. Запрос через CIblockElement сделает на 100500 джоинов больше

Бернгардт
13.09.2016
18:33:42
если не нравится джойнить не хочешь - ябы просто сортировку предрасчитывал

Mark
13.09.2016
18:34:47
Это црм - кеш долго не будет жить

Бернгардт
13.09.2016
18:34:51
сфигали? наоборот. Запрос через CIblockElement сделает на 100500 джоинов больше
для справки - любая орм сущность - селект банальный в два раза дольше будет выполняться (в первую очередь за счет того что несколько раз структуру таблиц поднимает) - дольше чем банальный ciblockelement::getlist даже с указанными пропами

Это црм - кеш долго не будет жить
тогда правильный sql и нормальные ключи проставить, чтобы фуллскана нигде не было при фильтре

если таковой есть.. и будет норм

Mark
13.09.2016
18:37:31
На апи получается такого не сделать?

Бернгардт
13.09.2016
18:37:36
если компоненты там тяжелвые какие то и хочется получить от них плюшки - я бы sql обернул своей компонентой, на нее натравил пагинацию, а список ид уже штатной компоненте передавал.. и нагрузку держит, и компоненты битрикса со всем фаршем на руках, только с пагинацией жопа небольшая

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

Mark
13.09.2016
18:38:48
ОРМ
Можно пример кода для запуска такой сортировки (не самой орм сущности) ?

Бернгардт
13.09.2016
18:40:12
"несколько раз структуру таблиц поднимает" а вот отсюда поподробней
замеры привели к такому выводу, что хоть заоптимизируйся когда набираешь орм, класс, ты там указываешь поля которые у тебя входят вот чтобы сверить эти поля - поднимается структура таблицы и если вывод полей ты еще можешь ключами закрыть тормоза бд, то поднятие полей таблицы, а потом внутреннию логику перепроверки - хотть убей, ничего не сделаешь

Google
Бернгардт
13.09.2016
18:41:08
я в это вляпался когда для очень большого сайта делал карточки с очень большим количеством свойств понятно было что свойства должны лежать в своих таблицах, но как раз думал что тут мне орм друг

Mark
13.09.2016
18:41:24
А, там можно ран таймы например добивать и тд. Ну ок.

И чем кончилось?)

Бернгардт
13.09.2016
18:42:17
А зачем тогда описывать структуру вручную?
для того чтобы дать доп.данные которых нет в структуре обязательность, валидаторы и т.п. а вот сверка что поле действительно есть, и что оно действительно string а не date - проверка будет

Dmitry
13.09.2016
18:42:30
Можно пример кода для запуска такой сортировки (не самой орм сущности) ?
$q = Blank\ReminderPersonalTable::getList( array( 'select' => array( 'ID', 'DATE_DIRECTION_SHORT', 'BLANK_ID', 'BLANK_CODE' => 'E_BLANK.CODE', 'BLANK_NAME' => 'E_BLANK.NAME', 'SPECIALIST_ID', 'SPECIALIST_FIRST_NAME' => 'S_SPECIALIST.FIRST_NAME', 'SPECIALIST_SECOND_NAME' => 'S_SPECIALIST.SECOND_NAME', 'SPECIALIST_LAST_NAME' => 'S_SPECIALIST.LAST_NAME', 'SEND_COUNTER', 'SEND_RESULT' ), 'runtime' => array( new Entity\ReferenceField( 'E_BLANK', 'Bars46\Requests\Blank\BlankList', array('=this.BLANK_ID' => 'ref.ID'), array('join_type' => 'LEFT') ), new Entity\ReferenceField( 'S_SPECIALIST', 'Bars46\Requests\Specialist\SpecialistsListS', array('=this.SPECIALIST_ID' => 'ref.ID'), array('join_type' => 'LEFT') ) ), 'filter' => array( '=ACTIVE' => 'Y', '=CARD_EXECUTOR_ID' => $cardExecutorID ), 'order' => array( 'ID' ) ) );

Бернгардт
13.09.2016
18:42:46
И чем кончилось?)
собственным модулем, со своим апи, под которым голый sql в нагруженных местах и все жили долго и счастливо, да :)

Mark
13.09.2016
18:43:24
так а св-ва разбили по таблицам?

Бернгардт
13.09.2016
18:44:36
естественно, иначе никак

Бернгардт
13.09.2016
18:45:19
на каждую группу товаров свой набор в наборах от заказчика еще скопился мусор различных свойств в общей сложности тысяча, битрикс чебурахнулся бы )

Бернгардт
13.09.2016
18:46:18
странно. Сижу постоянно мониторю query log. не сталкивался с постоянным поднятием полей. может hiload так делает?
нет, свои таблицы, а на них орм, как дядя битрикс прописал но я не логи смотрел, я танком под нагрузку клал без кешей, а потом глядел что тормозит и устраивает ли меня это

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

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

Dmitry
13.09.2016
18:49:52
Я у себя наоборот прирост скорости видел. Апишный ГетЛист делает запрос прав, запрос полей, запрос пользовательских полей, запрос документооборота и т.д. потом уже делает запрос с тем же джоином

Dmitry
13.09.2016
18:51:27
это не то: - тут две напрямую связанные сущности - нет сортировки вообще по связаному полю)
так по любому из них можно сортировать. типа 'S_SPECIALIST.IBLOCK_ELEMENT_ID. => 'ASC'

Mark
13.09.2016
18:51:31
это да

Google
Mark
13.09.2016
18:51:36
поэтому был смайлик

суть в первом пункте

Dmitry
13.09.2016
18:52:21
Разве это делает гетлист? Ты с компонентой не путаешь?
а компонента не гетлист использует типа?

Mark
13.09.2016
18:52:37
забейте на компонент

про него вообще не было речи)

Бернгардт
13.09.2016
18:52:58
а компонента не гетлист использует типа?
А из компоненты это можно вырезать. Апи и компоненту со всем фаршем сравнивать не корректно

Я сравнивал апи и апи

Mark
13.09.2016
18:53:33
да, давайте не ухдоить от темы)

Dmitry
13.09.2016
18:53:51
я имел в виду чистый гетлист без компоненты. т.е дебагер стоит на гетлист, шаг и смотрю логи скуля

Admin
ERROR: S client not available

Mark
13.09.2016
18:54:13
вау вау, хорошо сказано

Бернгардт
13.09.2016
18:54:14
да, давайте не ухдоить от темы)
Не мешай флудить, твоя проблема вторична ?

Mark
13.09.2016
18:54:20
ахаха

Бернгардт
13.09.2016
18:55:59
я имел в виду чистый гетлист без компоненты. т.е дебагер стоит на гетлист, шаг и смотрю логи скуля
Чистый нет лист не проверяет права насколько помню. Документооборот лучше на нагруженных выключать. Not null никогда не ляжет в ключ по определению.

Dmitry
13.09.2016
18:56:49
документооборот у меня вообще как модуль отключен. однако в запросах WF_ постоянно пытается найти

Бернгардт
13.09.2016
18:57:09
Не надо, я пошутил. Ты всегда прав, мастер. )

Dmitry
13.09.2016
18:57:55
ща проведем бесчеловечный эксперимент

Бернгардт
13.09.2016
18:58:33
не знаю, может действительно за последний год чтото существенно изменилось надо будет проверить.. просто я последнее время жуть как недоверчивый стал

Mark
13.09.2016
18:59:17
гетлист не проверяет сам права

и WF там правда зашит

Google
Mark
13.09.2016
19:01:59
есть еще вопрос интересный, если мы с этим закончили?)

Dmitry
13.09.2016
19:07:12
Запрос вида $rsAuthors = CIBlockElement::GetList( array("NAME" => "ASC"), array("IBLOCK_ID" => 17), false, false, array("ID","PROPERTY_TR_EMAIL") ); вызвал.... только не баньте за лог ))))

ТУТ был длинный лог из 17 запросов. стер, чтобы ленту не засорять

ТУТ был длинный лог из 17 запросов. стер, чтобы ленту не засорять

Бернгардт
13.09.2016
19:08:49
Да размер запроса вторичен. Что explain показывает?

Dmitry
13.09.2016
19:09:46
explain какого из 17 запросов?

Бернгардт
13.09.2016
19:10:26
А блин. Я на телефон перепрыгнул. Думал ты размером решил поразить) сорри

Dmitry
13.09.2016
19:10:47
а через ОРМ запрос был бы 1

всего -то надо было получить ИД и строчку с емайлом )))

Бернгардт
13.09.2016
19:11:55
Размер и количество запросов не так важны на самом деле)

Если запросов не тысяча?

Mark
13.09.2016
19:13:17
а через ОРМ запрос был бы 1
как это там был бы один запрос? св-ва же в отдельной таблице?

может еще эксперимент?

Dmitry
13.09.2016
19:16:45
runtime и был бы один запрос приджоиненной таблицей свойств

щас сделаем

Mark
13.09.2016
19:17:35
а, ну с джоинами - ок. давай, ждем лог)

Размер и количество запросов не так важны на самом деле)
если мало данных и мелкая посещаемость (активность) проекта - вообще ничего не важно))

Бернгардт
13.09.2016
19:20:10
Ну это да, но вообще важны ключи

План запроса опять же

Страница 139 из 1492