Добрый день. Возникла проблема, ни как не могу решить. Сайт каталог, в инфоблоке хранится около 1000 элементов. У элементов есть множественное свойство "Статус" тип список, код "STATUS2" со значениями "Продано", "Купить в кредит", "Отказано" и соответствующими кодами: PAYED, CREDIT и DENI.
Задача: при изменении статуса на "Продано" устанавливать поле "Сортировка" в значение 500. Реализовал через init.php следующим образом:
Код |
---|
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "setsort");
function setsort(&$arFields){
CModule::IncludeModule('iblock');
$prop = CIBlockElement::getProperty( $arFields['IBLOCK_ID'], $arFields['ID']);
$element = new CIBlockElement();
while($prop2 = $prop->Fetch() ){
if($prop2["CODE"] == "STATUS2" && $prop2["VALUE_XML_ID"] == 'PAYED'){
$res = $element->Update($arFields["ID"], Array("SORT" => IntVal(500)) );
AddMessage2Log("Товар с id " + $arFields["ID"] + "изменён.");
}
}
} |
При обновлении элемента, код выполняется до строчки "$res = ..." далее висит 30 секунд и выпадает с ошибкой:
Код |
---|
Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/u0320767/data/www/mysite.ru/bitrix/modules/iblock/classes/general/iblockelement.php on line 2801
|
Либо вылетает пустая страница. Диагностику системы средствами Bitrix проводил, проблем не выявлено. Помогите разобраться в чём причина долгого выполнения операции.