К стати как отфильтровать в один запрос всё дерево не в курсе?
LEFT_BORDER , RIGHT_BORDER - по левой и правой границе (поля LEFT_MARGIN и RIGHT_MARGIN , см. примечание); LEFT_MARGIN - по положению в дереве; RIGHT_MARGIN - по положению в дереве; Нужно посмотреть это наверное в sql join формируется. Я имею ввиду допусти глубина разделов большая в 3 или 4 или более уровней. Берём идентификатор самого нижнего и по нему как всю цепочку получить?
под рукой нет сайта с большим деревом разделов, но судя по картинке
можно попробовать фильтр поставить array('<LEFT_MARGIN'=>$curLeftMargin,'>RIGHT_MARGIN'=>$curRightMargin)
тоесть, левая граница должан быть меньше текущей и правая граница должна быть больше текущей
Wincert пишет: Подвернулся тут один аякс запрос и файербаг в фф показывает время получения ответа. Если ограничить выборку несколькими полями, то ответ приходит меньше чем за 100 мили секкунд, если не ограничивать вообще, то примерно 1.5 сек. По мере увеличения кол-ва свойств время ответа растет. Вообщем результат более чем нагляден для меня.
вам проще в корзину положить 4 помидора или 24? + если вы дергаете свойства, это тоже запросы(хоть и в кеш) + getList и Fetch + присоединенные таблицы
kopoBko пишет: Насколько мне не изменяет память, то если в экземпляре появляется ошибка, дальше код не идет. Упакуйте создание нового экземпляра внутрь цикла. И еще, языкозависимые параметры не могут быть пустыми.
Создание нового экземпляра внутрь цикла по моему не обязательно - в исходных кодах битрикса именно так и сделано. А вот по поводу пустых языкозависимых параметров вы скорее всего правы - "en" у меня не используется. Большое спасибо за ответ!! P.S. Вечером проверю вашу гипотезу
у меня элементы инфоблока не создавались, когда ловил первую ошибку.
Пробегаясь глазами по коду создания типа ИБ
Код
if (!$this->CheckFields($arFields))
return false;
Вот и смотрите, что будет когда на первойй же попытке проверка полей вернет false
Внутри этого CheckFields
Код
foreach ($arFields["LANG"] as $lid => $arFieldsLang)
{
if (strlen($arFieldsLang["NAME"]) <= 0)
{
$this->LAST_ERROR .= GetMessage("IBLOCK_TYPE_BAD_NAME")." ".$lid.".<br>";
}
}
Насколько мне не изменяет память, то если в экземпляре появляется ошибка, дальше код не идет. Упакуйте создание нового экземпляра внутрь цикла. И еще, языкозависимые параметры не могут быть пустыми.
"Сергей Гордеев пишет: Первый вариант не подходит, т.к. много элементов (а значит и файлов) с разными датами создания, в том числе и с самыми ранними. А второй это фактически тоже самое что я сам предложил )
Код
дернуть все файлы, которые актуальные(т.е. нужны)
Вопрос: как вы предлагаете проверить актуальность файла? В таблице с файлами есть поле с ID элемента к которому привязан этот файл?
нет, нету, ведь мы можем привязывать файл к любому элементу и не только инфоблока.
"Удаление старых элементов" я так понял вы удалили элементы, а записи о файлах осталисть еще.
Цитата
Сергей Гордеев пишет: собрать базу путей к активным
только не так Соберите ID файлов, потому что в базе всеравно останутся записи. И удаляйте оттуда CFile::Delete(); Будет долго, мучительно, но всё же Короче, действуйте как описали вы.
Сергей Гордеев пишет: У меня пока идея такая - пробежаться по всем активным элементам, собрать базу путей к активным файлам и потом удалить все файлы которые в эту базу не входят. Но боюсь что это операция затянется надолго. Может кто-то знает более простой способ?
первый вариант: через ssh(putty) удалить все файлы с датой создания больше указанной Если почистить только папку. Если таблицу в базе файлов, то пробежаться по ней и проверить существует ли этот файл. Собрать файлы, которые были удалены и найти их в инфоблоках и затереть все за собой.
Короче говоря 1)чистим файлы 2)чистим базу
второй вариант: дернуть все файлы, которые актуальные(т.е. нужны) дальше найти файлы, которые не входят в этот список (arFilter=array("!ID"=>$arFiles) Удалить эти файлы.
первый вариант быстрее удалит сами файлы, второй вариант сделает это правильней .
p.s. Требуется администратор сайта с знаниями CMS 1С-Битрикс(необходима поддержка сайта, редактирование, знания программного кода), навыками продвижения и оптимизации.
сверстать. Давай на секунду представим что твоя картинка это торт, сладкий такой вкусный, многослойный...ахъ так вот, наша картинка как и торт имеет несколько слоев... так вот, пойдем от дальнего к ближнему: 1)фон 2)тексты и клипарт 3)наш товар