@mirexdoors

Как избавить от 500 ошибки при большом скрипте?

Здроавствуйте! Есть следующий код, который массово заполняет свойство у элементов инфоблока:
$resElements = CIBlockElement::GetList(
	    	Array("SORT"=>"ASC"), 
	    	Array("IBLOCK_ID"=>2,"ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y"), 
	    	false, 
	    	false, 
	    	Array("ID", "IBLOCK_ID", "NAME")
	    );
	
    if($resElements){  
    	while($obElements = $resElements->GetNextElement()){

    		$arFields = $obElements->GetFields();
 			$arProps = $obElements->GetProperties();
 			// если у элемента заполнено свойство
 			if (is_array($arProps[$NAME_PROPERTY_SNAP]['VALUE']) && !empty($arProps[$NAME_PROPERTY_SNAP]['VALUE'])) {
 				$SNAPPING_BY_PRODUCT_ARR = $arProps[$NAME_PROPERTY_SNAP]['VALUE'];
 				
 				// проверяем, есть ли уже привязка у элемента к желаемому значению свойства
 				if(in_array($SNAPPING_ID, $SNAPPING_BY_PRODUCT_ARR)){
 					// проверяем на отсутствие в выборке привязки, то есть это привязку надо удалить
 					if(in_array($SNAPPING_ID, $SNAPPING_BY_PRODUCT_ARR) && !in_array($arFields['ID'], $ARR_ELEMENT_ID) ){
	 					if(($key_prop = array_search($SNAPPING_ID, $SNAPPING_BY_PRODUCT_ARR)) !== false){
						     unset($SNAPPING_BY_PRODUCT_ARR[$key_prop]);
						     $PROP = array($NAME_PROPERTY_SNAP =>$SNAPPING_BY_PRODUCT_ARR);
							 $CIBlockElement->SetPropertyValuesEx($arFields['ID'], 2, $PROP);
						}
	 				}
 				}else if(in_array($arFields['ID'], $ARR_ELEMENT_ID)){
 					$SNAPPING_BY_PRODUCT_ARR[] = $SNAPPING_ID;
 					$PROP = array($NAME_PROPERTY_SNAP =>$SNAPPING_BY_PRODUCT_ARR);
				    $CIBlockElement->SetPropertyValuesEx($arFields['ID'], 2, $PROP);
 				}
 				
 			// если свойство не заполнено
 			}else if(in_array($arFields['ID'], $ARR_ELEMENT_ID)){
 				$PROP = array($NAME_PROPERTY_SNAP =>array($SNAPPING_ID));
				$CIBlockElement->SetPropertyValuesEx($arFields['ID'], 2, $PROP);
 			}	
    	} ?>


Беда в том, что в инфоблоке 13000 элементов. В логах:

PHP Warning:  Unknown: Input variables exceeded 10000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0, referer: https://artameb.boxdev.ru/bitrix/admin/isvapp.iblockhelper_reson_offers.php


Увеличил max_input_vars до 100000, но не помогло.
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 2
@PapaStifflera
Родился, вырос...
500 ошибку придумали специально для говнокода
Ответ написан
Комментировать
@Yan-s
Полагаю не тот php.ini редактировали.

А обязательно пихать все это именно в параметры запроса? Отправляйте JSON и не будет таких проблем.

UPD
еще вот такая тема есть jbzoo.ru/docs/max-input-vars вконце
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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