@yii_lover

Как отследить или исправить ошибку «Allowed memory size» на сайте на 1c-bitrix?

Если некоторое время походить по сайту и класть товары в корзину(не уверен , что это влияет, но ошибка происходит в модуле sale), то возникает такая ошибка. К сожаление компетенции не хватает, чтобы найти ее.

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 32768 bytes) in /var/www/ofcydev/bitrix/modules/sale/lib/discount.php(2554) : eval()'d code on line 1

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 32768 bytes) in /var/www/ofcydev/bitrix/modules/main/lib/diag/exceptionhandl­erlog.php on line 1
  • Вопрос задан
  • 1694 просмотра
Пригласить эксперта
Ответы на вопрос 2
402d
@402d
начинал с бейсика на УКНЦ в 1988
НУЖНО разбираться где криво написан код.
Угадать по какой причине не возможно.
Я например видел подсчет числа записей через считывание их всех, человек просто не знал
про select count()
Ответ написан
@yii_lover Автор вопроса
Забыл указать проблема не в выделении памяти, сколько не выделяй все съедает
C eval все логично на самом деле. Это функция проверки условий скидки
protected function checkDiscountConditions()
	{

		$checkOrder = null;

		$key = $this->enableCheckingPrediction? 'PREDICTIONS_APP' : 'UNPACK';

		if (empty($this->currentStep['discount'][$key]))
			return false;
		
		eval('$checkOrder='.$this->currentStep['discount'][$key].';');
		if (!is_callable($checkOrder))
			return false;
		$result = $checkOrder($this->orderData);
		unset($checkOrder);
		return $result;
	}

Вот сюда $this->currentStep['discount'][$key] может прийти любое условие
Ответ написан
Ваш ответ на вопрос

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

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