208 похожих чатов

Добрый день Может ли быть проблема с получением данных в CIBlockElement::GetList

по XML_ID, если сильном много запросов подряд? На сайте есть импорт, в котором каждый элемент ищется по XML_ID и обновляется. Но с какого-то элемента - порядка 6000+ CIBlockElement::GetList возвращает пустоту

29 ответов

43 просмотра

Рекурсивно AJAXом долбить?

Nadezhda-Kurganova Автор вопроса
avel07
Рекурсивно AJAXом долбить?

Что именно рекурсивно ajax'ом? Рекурсии точно нет никакой

Nadezhda Kurganova
Что именно рекурсивно ajax'ом? Рекурсии точно нет ...

Ну получать callback и в нём обратно вызывать запрос

Nadezhda Kurganova
Что именно рекурсивно ajax'ом? Рекурсии точно нет ...

Возможно ваша проблема происходит из-за того, что заканчивается время исполнения PHP

Nadezhda-Kurganova Автор вопроса
avel07
Возможно ваша проблема происходит из-за того, что ...

Нет, в лог-то он в этом момент пишет, дальнейшая логика отрабатывает, но условие по результатам CIBlockElement::GetList не срабатывает ,потому что там пусто. Импорт свой

Пустоту или false? Вообще нормальный импорт разбивают по шагам. Рекомендации "перейти на d7" выкинуть и забыть.

Nadezhda-Kurganova Автор вопроса
Eugene Zhukov
Пустоту или false? Вообще нормальный импорт разбив...

Пустоту, то есть 0 найденных элементов. Да, видимо придется. Изначально элементов для обмена было не много, поэтому деления на шаги не делали, сейчас видимо придется. Только суть в том, что 1С для обмена не обращается к сайту никак, а просто выгружает файл в папку. Поэтому придется использовать какую-то свою идею для шагов, возможно, через агенты

Nadezhda Kurganova
Пустоту, то есть 0 найденных элементов. Да, видимо...

Так, вот теперь стало интересно. Вы в импорте количество элементов считаете или элемент ищите по XML_ID? Насчет файла - ну, распарсите его во временную таблицу, дальше по шагам ее.

Nadezhda-Kurganova Автор вопроса
Eugene Zhukov
Так, вот теперь стало интересно. Вы в импорте коли...

Элемент по XML_ID. И вот такое условие по результату не работает if($ob = $res->GetNext()) {}

Тогда почему 0? И фильтр покажите.

Nadezhda-Kurganova Автор вопроса
Eugene Zhukov
Тогда почему 0? И фильтр покажите.

Потому что пробовала выводить количество для теста. Фильтр вообще простой $arSelect = Array("ID", "NAME", "ACTIVE"); $arFilter = Array("IBLOCK_ID"=>self::IBLOCK_STOREROOM_ID, "XML_ID"=>$id); $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); Он работает до какого-то элемента, а потом в результатах пусто. Если этот же фильтр с теми же данными просто скопировать в тестовый файл - всё нормально находит. А именно в цикле работы над данными импорта в какой-то момент перестает выдавать результат

Nadezhda Kurganova
Потому что пробовала выводить количество для теста...

Нельзя с базой так жестоко (я про фильтр). Замените ключ "XML_ID" на "=XML_ID" - сейчас у вас поиск по подстроке, что ухудшает работу с ростом числа элементов. В оправдание могу сказать, что вы повторили мою ошибку 15-летней примерно давности. Только я Оракл валить пытался.

Nadezhda Kurganova
Спасибо!

И GetNext вам тоже не нужен. Используйте Fetch

Nadezhda-Kurganova Автор вопроса
Eugene Zhukov
И GetNext вам тоже не нужен. Используйте Fetch

Спасибо за подсказки в оптимизации работы, но в целом по проблеме не помогло. Как-то через раз находятся элементы: https://photo-screen.ru/i/2FMZaMVSM - хотя все они именно с этими кодами из 1С есть в инфоблоке - и поиск по инфоблоку по внешнему коду в админке их находит

Nadezhda Kurganova
Спасибо за подсказки в оптимизации работы, но в це...

Т.е. в админке находит всегда, в скрипте для АПДЕЙТА - отслучая к случаю? Документооборот и бизнес-процессы выключены?

Nadezhda-Kurganova Автор вопроса
Eugene Zhukov
Т.е. в админке находит всегда, в скрипте для АПДЕЙ...

Для первых 6404 нормально, а дальше от случая к случаю

В настройках инфоблока

Nadezhda Kurganova
Для первых 6404 нормально, а дальше от случая к сл...

Попробуйте свой if заменить на $ob = $res->Fetch(); unset($res); if ($ob)

Nadezhda-Kurganova Автор вопроса
Eugene Zhukov
В настройках инфоблока

Редакция Стандарт - там видимо и нет такого

Nadezhda-Kurganova Автор вопроса
Eugene Zhukov
Нельзя с базой так жестоко (я про фильтр). Заменит...

Если я буду использовать в фильтре array('NAME' => 'NAME'), то будет поиск медленнее, чем использование array('=NAME' => 'NAME') ?

поиск по подстроке, конечно медленнее

Dmitriy
поиск по подстроке, конечно медленнее

Я даже не замечал, что это так работает 😅 Для меня небольшой шок

Ilya Mazyarov ⚡
Я даже не замечал, что это так работает 😅 Для меня...

Просмотр sql-запросов дает много информации для размышлений

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта