Есть задача, в которой на сайте должны заполняться типы цен для товара. При полной выгрузке из 1с, получается номенклатура в 14тыс. позиций, для которых требуется заполнение типов цен. В свойствах инфоблока каталога добавлена галочка для товара "Обновить типы цен". Реализован скрипт, который ищет элементы, у которых стоит галка "Обновить типы цен", и заполняет у них типы цен. Запуск скрипта добавлен в агенты с запуском через заданный интервал. Если делать за раз все, то скрипт может быть очень долгим, поэтому поставлено ограничение на 600 элементов с галочкой "Обновить типы цен" за раз и интервал установлен в 600 (на это требовалось скрипту в среднем две минуты). Как цены были установлены, у элемента снимается галочка и обновляется фасетный индекс
\Bitrix\Iblock\PropertyIndex\Manager::updateElementIndex($iBlockID, $productID);
То есть после полной выгрузки, какое-то время будет сайт подтормаживать, но зависать не должен. А когда все цены обновлены, скрипту требуются доли секунды, чтобы убедиться, что ничего к обновлению нет.
Но по непонятным причинам в таблице агентов, наблюдалось, что агент перестал обновлять время следующего запуска. При ручной попытке запуска скрипта из командной строки PHP в админке битрикса, система выдала ошибку "Deadlock found when trying to get lock; try restarting transaction", на строчке обновления индекса. Но так было только один раз и пока больше не повторялось.
Как лучше реализовать такой скрипт?