Перейти к содержанию
Официальный форум поддержки Simpla

Ошибка удаления ВСЕХ товаров


Перейти к решению Решено phukortsin,

Рекомендуемые сообщения

Продолжаю знакомиться с движком, магазин уже запустили.

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

Ни один товар просто не удаляется после подтверждения.
Это у меня только так по неизвестной причине или ошибка движка и кто сталкивался с подобным?

Ссылка на сообщение
Поделиться на другие сайты

попробуйте на demo.simplacms.ru  возможно только у вас, через импорт загрузите свой каталог и пробуйте

На демо не так много товаров чтобы подобная ошибка возникла.
Ссылка на сообщение
Поделиться на другие сайты
  • Решение

Такое имеет место быть, встречалось неоднократно. Есть как минимум две причины.

 

1. ограничение max_input_vars, неоднократно возникали вопросы по похожим ситуациям, например

http://forum.simplacms.ru/topic/10128-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2/

 

2. Другая - нерациональный способ удаления в Simpla. Разработчиком сделано так, что при удалении одного товара требуются много SQL-запросов, в зависимости от данных более 10, а может быть и 100. А при массовом удалении товаров эти запросы выполняются  тупо в цикле для каждого товара отдельно. И вполне может оказаться, что число  запросов может подойти к миллиону, чего частенько хостинг не выдерживает...

 

Как уже советовали ранее, попробуйте импортом загрузить на демо свои данные и посмотреть, сработает ли там...

Изменено пользователем phukortsin
Ссылка на сообщение
Поделиться на другие сайты

На демо 15000 товаров, позаливали все кому не лень))
там когда показать все нажимаешь сервер загибается и ошибку выдаёт.

Но я сделал свой импорт с 400 товарами и там удалилось когда все выбрал.
Значит не ошибка движка.

Правда потом когда вернул старый импорт, фотографий уже не было.
Там есть кому подправить?

Я посмотрел у себя на хостинге в настройках есть функция php_max_input_vars:
Там значение 1000

 

Но товаров у меня и 400 не хочет удалять.. есть ли смысл увеличивать?

Изменено пользователем madison21
Ссылка на сообщение
Поделиться на другие сайты

На демо не так много товаров чтобы подобная ошибка возникла.

 

Такое чувство что ты только первую часть предложения читаешь все..

Ссылка на сообщение
Поделиться на другие сайты

В этот раз да, но я ни в чём не ошибся.

Ты просто давно не заглядывал на демо симплы.

Там сейчас 15000 товаров, насовали тестировщики))

 

А shooroop говорил чтобы свой каталог залить и проверить, я так и сделал.

Ссылка на сообщение
Поделиться на другие сайты

Ты просто давно не заглядывал на демо симплы.

Там сейчас 15000 товаров, насовали тестировщики))

 

А shooroop говорил чтобы свой каталог залить и проверить, я так и сделал.

Без разницы какой там сейчас каталог, со временем бекап стандартной симплы восстанавливается.
Ссылка на сообщение
Поделиться на другие сайты

Без разницы какой там сейчас каталог, со временем бекап стандартной симплы восстанавливается.

Да ладно земляк, не столь важно, мелочи это..

В любом случае спасибо за мнение..

Ссылка на сообщение
Поделиться на другие сайты

Такое имеет место быть, встречалось неоднократно. Есть как минимум две причины.

 

1. ограничение max_input_vars, неоднократно возникали вопросы по похожим ситуациям

Таки докопался.

Поменял в настройках админки хостинга я этот параметр max_input_vars с 1000 до 5000 и попробовал удалить.

Всё сработало!!!

 

Значит в этом дело оказывается.

 

А кто знает не отразится ли смена этого параметра на что другое?

И какие ограничения у этого параметра... то есть максимум? 

Изменено пользователем madison21
Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

Продолжаю знакомиться с движком, магазин уже запустили.

 

Выявил ошибку..

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

 

Ни один товар просто не удаляется после подтверждения.

Это у меня только так по неизвестной причине или ошибка движка и кто сталкивался с подобным?

пост запросы ограничены, меняйте хостинг

Изменено пользователем Tamara
Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

пост запросы ограничены, меняйте хостинг

Меняйте сразу движок. Еще много чего найдете пока не плюнете. 

Ссылка на сообщение
Поделиться на другие сайты

Меняйте сразу движок. Еще много чего найдете пока не плюнете.

Ничего более умного не придумали?

С вашими советами идти на базаре торговать.

Ссылка на сообщение
Поделиться на другие сайты

Ничего более умного не придумали?

С вашими советами идти на базаре торговать.

Меняйте сразу движок. Еще много чего найдете пока не плюнете.

 

По моим наблюдениям, на Simpla в последнее время новые проекты почти не создаются, а в основном поддерживаются созданные ранее. Что вполне естественно для системы, у которой пятый год нет обновлений. 

Ссылка на сообщение
Поделиться на другие сайты

Я на ReadyScript ушел. Там все как надо, и тоже на Smarty. Simpla - это CMS начального уровня для "разминки".

Тогда спрашивается какого хера вы тут на форуме плодите свой никому не нужный мусор?
Ссылка на сообщение
Поделиться на другие сайты

Тогда спрашивается какого хера вы тут на форуме плодите свой никому не нужный мусор?

 

Надо различать - не нужно Noxter-у персонально и не нужно никому вообще. Все же есть некоторая разница.

 

Noxter, сделайте паузу, не плодите мусор своими сообщениями. У Вас сейчас такое симпатичное количество сообщений - просто заглядение - ни у кого такого нет, и может, никогда не будет. Пусть повисит хоть недельку...

Изменено пользователем phukortsin
Ссылка на сообщение
Поделиться на другие сайты

Надо различать - не нужно Noxter-у персонально и не нужно никому вообще. Все же есть некоторая разница.

 

Noxter, сделайте паузу, не плодите мусор своими сообщениями. У Вас сейчас такое симпатичное количество сообщений - просто заглядение - ни у кого такого нет, и может, никогда не будет. Пусть повисит хоть недельку...

Корс мудозвон завидуй молча, самый что не есть говнюк форума это ты, тебе это уже много людей высказало и утёрло тебе нос, ты никому не нужен - смирись старичок... Изменено пользователем Noxter
Ссылка на сообщение
Поделиться на другие сайты

Вообще механизм удаления товара настолько топорный что волосы стали дыбом.

public function delete_product($id)
	{
		if(!empty($id))
		{
			// Удаляем варианты
			$variants = $this->variants->get_variants(array('product_id'=>$id));
			foreach($variants as $v)
				$this->variants->delete_variant($v->id);
			
			// Удаляем изображения
			$images = $this->get_images(array('product_id'=>$id));
			foreach($images as $i)
				$this->delete_image($i->id);
			
			// Удаляем категории
			$categories = $this->categories->get_categories(array('product_id'=>$id));
			foreach($categories as $c)
				$this->categories->delete_product_category($id, $c->id);

			// Удаляем свойства
			$options = $this->features->get_options(array('product_id'=>$id));
			foreach($options as $o)
				$this->features->delete_option($id, $o->feature_id);

			// Удаляем связанные товары
			$related = $this->get_related_products($id, 'product');
			foreach($related as $r)
				$this->delete_related_product($id, $r->related_id, 'product');
			
			// Удаляем товар из связанных с другими
			$query = $this->db->placehold("DELETE FROM __related_products WHERE related_id=? AND object=product", intval($id));
			$this->db->query($query);
			
			// Удаляем отзывы
			$comments = $this->comments->get_comments(array('object_id'=>$id, 'type'=>'product'));
			foreach($comments as $c)
				$this->comments->delete_comment($c->id);
			
			// Удаляем из покупок
			$this->db->query('UPDATE __purchases SET product_id=NULL WHERE product_id=?', intval($id));
			
			// Удаляем товар
			$query = $this->db->placehold("DELETE FROM __products WHERE id=? LIMIT 1", intval($id));
			if($this->db->query($query))
				return true;			
		}
		return false;
	}
Зачем все эти get_variants, get_images, get_categories и прочие когда можно обойтись парочкой SQL запросов и unlink-ом файлов???

Функция удаления частично работает через API, а частично просто SQL запросом, вообще бредня какая-то.

Я никогда на этот кусок кода не обращал внимания, сейчас вот сел пересмотрел и офигел!

1. Варианты товара - 3 запроса

2. Изображения - 4 запроса + тяжелая функция glob (продублированная) для чтения директории изображений

3. Связка категорий 2 запроса + рекурсивный запрос (ужас!)

4. Свойства - 2 запроса

5. Связанные товары - 3 запроса

6. Комменты - 2 запроса

7. Покупки - 1 запрос

8. Сам товар - 1 запрос

Для удаления одного товара у нас выполняется 18 запросов, рекурсивный обход категорий и ресурсоёмкая функция для удаления картинок с сервера.

Как бы это по-мягче выразить... Это писец просто!

Изменено пользователем Noxter
Ссылка на сообщение
Поделиться на другие сайты

1. Варианты товара - 3 запроса

2. Изображения - 4 запроса + тяжелая функция glob (продублированная) для чтения директории изображений

3. Связка категорий 2 запроса + рекурсивный запрос (ужас!)

4. Свойства - 2 запроса

5. Связанные товары - 3 запроса

6. Комменты - 2 запроса

7. Покупки - 1 запрос

8. Сам товар - 1 запрос

Для удаления одного товара у нас выполняется 18 запросов, рекурсивный обход категорий и ресурсоёмкая функция для удаления картинок с сервера.

Как бы это по-мягче выразить... Это писец просто!

 

 Арифметика совсем неправильная.

 

Для одного товара требуется РАЗНОЕ число запросов, чаще всего намного больше. Про это в теме ранее сказано в #4.

 

Обычно программисты с арифметикой не путают, особенно так грубо...

Ссылка на сообщение
Поделиться на другие сайты

Арифметика совсем неправильная.

 

Для одного товара требуется РАЗНОЕ число запросов, чаще всего намного больше. Про это в теме ранее сказано в #4.

 

Обычно программисты с арифметикой не путают, особенно так грубо...

При условии что все связи есть конечно. Изменено пользователем Noxter
Ссылка на сообщение
Поделиться на другие сайты
			// Удаляем свойства
			$options = $this->features->get_options(array('product_id'=>$id));
			foreach($options as $o)
				$this->features->delete_option($id, $o->feature_id);

Вот здесь легко может быть и 20 запросов и 50 ;)

Как и в остальных циклах...

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...