Добрый вечер Уважаемые форумчане. у меня опять небольшой ступор. Я заранее знаю что так поступать плохо, НО мне нужно именно в yii2 изменить вот этот параметр Maximum execution time of 30 seconds exceeded на 120. ресурсы на сервере позволяют, такие запросы будут крайне редко. Все это делается для того, что бы за раз удалить 50 000 записей. вставить такое кол-во не проблема, а вот удалить сложнее.
Если у Вас есть альтернатива, с радостью приму ее )) Всех с Рождеством !!!
увеличить Maximum execution time of 30 seconds exceeded в yii2 advanced
Re: увеличить Maximum execution time of 30 seconds exceeded в yii2 advanced
в чем проблема удалить через консоль? там таких ограничений нету
Re: увеличить Maximum execution time of 30 seconds exceeded в yii2 advanced
для долгих процессов нужно юзать консоль - там ограничений по умолчанию нет.
Re: увеличить Maximum execution time of 30 seconds exceeded в yii2 advanced
Не всегда можно использовать консоль, иногда нужна "кнопочка, при нажатии которой...". set_time_limit() пробовали?
-
- Сообщения: 104
- Зарегистрирован: 2015.10.04, 09:47
Re: увеличить Maximum execution time of 30 seconds exceeded в yii2 advanced
А прямую эскуэлину на удаление написать нельзя? Она то шустрая. Кроме этого к Php уже отношения иметь не будет.
Re: увеличить Maximum execution time of 30 seconds exceeded в yii2 advanced
ТС, действительно вы можете просто выполнить deleteAll по условиям переданным в функцию.
Еще предположение, если у вас задача удалить все записи из таблицы, то рекомендую посмотреть в сторону.
Если же у вас удаление модели это сложный бизнес-процесс, то при таких объемах только через консоль.
Еще предположение, если у вас задача удалить все записи из таблицы, то рекомендую посмотреть в сторону.
Если же у вас удаление модели это сложный бизнес-процесс, то при таких объемах только через консоль.
Re: увеличить Maximum execution time of 30 seconds exceeded в yii2 advanced
Господа решение найдено. если кому интересно вот код.
Я оптимизировал запрос к БД. 50К записей удаляет за 15 сек. 90К за 28 сек.
Я оптимизировал запрос к БД. 50К записей удаляет за 15 сек. 90К за 28 сек.
Re: увеличить Maximum execution time of 30 seconds exceeded в yii2 advanced
Код: Выделить всё
$id = 22; // id товара в БД
$quantity = 100000 ; // кол-во покупаемых товаров.
$goods = Goods::find()->where(['product_id' => $id])->limit($quantity)->asArray()->all();
$file = array();
foreach ($goods as $value){
$file[] = $value['info']; // Сами товары
$arr[] = $value['id']; // id этих товаров
}
$array = array_chunk($arr,5000); // Разбиваю онромный массив на массивы по 5К.
foreach ($array as $value){
\Yii::$app
->db
->createCommand()
->delete('goods', ['id' => $value]) // Удаляю по 5К за итерацию.
->execute();
}