Drupal commerce, атрибуты и таблица cache_form

Аватар пользователя kolosnitsyn kolosnitsyn 15 мая 2012 в 18:10
1

Всем привет.

Commerce.

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

Кто сталкивался? Какие есть решения?

upd. Запрос в cron не подходит. db_maintenance тоже не решение. Надо как-то устранить эту проблему.

Комментарии

Аватар пользователя kolosnitsyn kolosnitsyn 19 октября 2012 в 23:45

Проблема решена была следующим способом:
1. Написал разработчикам коммерца о проблеме.
2. Они написали, что если такие проблемы - это действительно проблемы, то я, получается, экономлю на хостинге. И если я обладаю нормальной VDS-кой, то это и не проблема, в общем-то.

Пришлось писать скрипт для очистки устаревших записей в БД по крону.

Результат: полет нормальный, 4 мес.

Аватар пользователя NecroHill NecroHill 20 октября 2012 в 1:49

тоже в конце концов добавил в cron.php строчку, буквально сегодня, хотя мне, в принципе, не впадлу и в ручную было truncate table время от времени делать.
у меня хостинг жирный, но это не повод не следить за размером таблиц.
а Drupal Commerce сырой и с множеством косяков.

Аватар пользователя kolosnitsyn kolosnitsyn 22 октября 2012 в 9:09

"NecroHill" wrote:
у меня хостинг жирный, но это не повод не следить за размером таблиц.

+1
"NecroHill" wrote:
а Drupal Commerce сырой и с множеством косяков

+1

Аватар пользователя DivaDii DivaDii 27 октября 2012 в 11:29

"kolosnitsyn" wrote:
Пришлось писать скрипт для очистки устаревших записей в БД по крону.

Подскажите, пожалуйста, какой скрипт Вы написали.

Все варианты, которые предлагались на Друпал.ру для борьбы с этой проблемой, - я перепробовала. Мне ничего не помогло. Я думаю, что это из-за того, что Друпал7. А там все решения предлагаются для D6. (И у меня сейчас по этой проблеме - 13 штук закладок на Друпал.ру)

У меня таблица кеш_форм растет на модуле fivestar (голосование). Мне больше всего подошло решение, которое предложил Друпалас (на его сайте). В файле form.inc уменьшить время существования кеша. Сейчас - чуть легче. То есть реже приходится чистить таблицу в MySQL руками.

Но если Вам удалось таки найти решение для D7, - поделитесь, пожалуйста!

Господа, у меня сайт литературный. И люди на нем голосуют за отдельные записи. Друпал только осваиваю. Точнее - немножко ковыряю. (То есть я php умею только читать со словарём. А писать не умею).
Для целей моего сайта - Друпал максимально подходящий.
Но вот эта проблема с кешем - меня просто убивает!
Спасибо!

Аватар пользователя DivaDii DivaDii 27 октября 2012 в 19:23

"NecroHill" wrote:
db_query("DELETE FROM cache_form where 'expire' < UNIX_TIMESTAMP();");"

А у Вас Друпал 6-й или 7-й?

И тут у Вас, кажется, последняя двойная кавычка лишняя - не? Может быть, я ошибаюсь, конечно же.

Это решение предлагается неоднократно в других ветках.
Это надо запихнуть в файл cron.php
Правильно?

Запихивала - не помогает. Просто не работает. Никак себя не проявляет. Хотя cron, конечно же, работает.

Может, я не туда вставляю? Я вставляю эту строчку самой последней в файле cron.php.
После неё уже ничего нет. Может, её надо куда-то повыше поставить? Куда?

Повторяю: я пробовала ВСЕ варианты, предлагаемые здесь, на Друпал.ру в 13-ти ветках.
Мне не помогло.

Поэтому я спрашиваю у kolosnitsyn, что он подразумевает под словом "написал скрипт". Может быть, что-то другое.

Спасибо.

Аватар пользователя kolosnitsyn kolosnitsyn 10 ноября 2015 в 11:48

Не надо пихать ничего в cron (т.е. править файл cron.php) Smile

Во вложении модуль. В модуле один хук cron.
По крону выполняется указанный в комментах выше запрос к БД.

Аватар пользователя DivaDii DivaDii 28 октября 2012 в 21:22

"kolosnitsyn" wrote:
Во вложении модуль. В модуле один хук cron.

О!!!!!
СПАСИБО, БЛАГОДЕТЕЛЬ!

Так этот модуль надо везде размножить.

Запустила крон - действительно вычистил кеш_форм.

Ни один из других способов не помог.

Вы не представляете, как я благодарна!

Аватар пользователя bumble bumble 3 марта 2013 в 20:10

"kolosnitsyn" wrote:
Во вложении модуль.

О-О-О-О... благодарности моей нет границ!

Аватар пользователя pringlz pringlz 25 мая 2013 в 0:45

Спасибо! Работает! Для drupal 6 можно просто в info файле поменять 7 на 6. Наверно, всем и так понятно...

Аватар пользователя qvazar qvazar 4 июля 2013 в 22:05

Мне что-то не помогло, как были базы (innoDB) 120mb так и остались, сайт совсем новый и страниц около 30. Сommerce пока даже еще не ставил, а уже такой размер!

Аватар пользователя DivaDii DivaDii 6 июля 2013 в 15:58

qvazar wrote:
Мне что-то не помогло, как были базы (innoDB) 120mb так и остались, сайт совсем новый и страниц около 30. Сommerce пока даже еще не ставил, а уже такой размер!

Так Вы прямо в таблице базы данных посмотрите, какая таблица разрастается.
Может, действительно, совсем другая.
И причина в чем-то другом.

Аватар пользователя Alexanderos Alexanderos 21 марта 2014 в 9:21

Очень советую этот модуль OptimizeDB!
Подходит для Drupal 6 и Drupal 7.

- Умеет очищать таблицу cache_form по нажатию кнопки, а также по расписанию.
- Умеет оптимизировать базу и тем самым уменьшать ее размер.
- Умеет чинить таблицы базы.
- Умеет уведомлять о том что база нуждается в оптимизации по расписанию.

Только что на Drupal 6 его протестировал.
База весила 400 МБ, после оптимизации 280 МБ.