Я экономя много данных (Модель, в которой много моделей, вложенных в различные типы ассоциаций). Я получаю эти данные из внешнего веб-сервиса и после того, как Маршалл это я пытаюсь сохранить с транзакцией:CakePHP 3.x Transacction - не хватает ОЗУ
$this->connection()->transactional(function() use ($entities) {
foreach ($entities as $entity) {
$this->save($entity);
}
});
probleam Сейчас я имею что мой процесс PHP запущен из памяти. Мой php.ini настроен на 128M.
Возможно ли уменьшить нагрузку на данные, сохраняющие объекты без использования транзакции?
спасибо.
Вы пытаетесь очистить неизвестное количество записей за одну транзакцию - это не хорошо по многим причинам, из которых один из них заканчивается из ОЗУ. Более разумный подход - это промывка 10, 50 или 100 записей в рамках одной транзакции. В основном: разбить его на несколько транзакций и отправить партии по 10, 50, 100 (или поэкспериментировать с номером, чтобы попасть в sweetspot). – Mjh
Привет @Mjh, как я могу подойти к представлению CakePHP 3.x? Не могли бы вы привести пример или ссылку на документ, который мог бы объяснить мне, как его разделить? Я попробую сохранить без транзакционного материала слишком просто в обычном режиме. – Tzaoh
Ваши '$ entity' - это массив данных. Пройдите через него, разделите его на массив из 50 записей и используйте код, который вы разместили в вопросе. – Mjh