Всем привет.
Commerce.
Когда я сопоставляю одной ноде 2 и более продукта через поле product_reference,
при каждом отображении формы добавления товара в корзину в таблицу cache_form добавляется 2 записи (или столько, сколько прикреплено к ноде продуктов).
Тем самым, эта таблица постоянно растёт и приходится очень часто вычищать эту таблицу.
Кто сталкивался? Какие есть решения?
upd. Запрос в cron не подходит. db_maintenance тоже не решение. Надо как-то устранить эту проблему.
Комментарии
та же хрень, Егор. не решил проблемму?
Проблема решена была следующим способом:
1. Написал разработчикам коммерца о проблеме.
2. Они написали, что если такие проблемы - это действительно проблемы, то я, получается, экономлю на хостинге. И если я обладаю нормальной VDS-кой, то это и не проблема, в общем-то.
Пришлось писать скрипт для очистки устаревших записей в БД по крону.
Результат: полет нормальный, 4 мес.
тоже в конце концов добавил в cron.php строчку, буквально сегодня, хотя мне, в принципе, не впадлу и в ручную было truncate table время от времени делать.
у меня хостинг жирный, но это не повод не следить за размером таблиц.
а Drupal Commerce сырой и с множеством косяков.
+1
+1
Подскажите, пожалуйста, какой скрипт Вы написали.
Все варианты, которые предлагались на Друпал.ру для борьбы с этой проблемой, - я перепробовала. Мне ничего не помогло. Я думаю, что это из-за того, что Друпал7. А там все решения предлагаются для D6. (И у меня сейчас по этой проблеме - 13 штук закладок на Друпал.ру)
У меня таблица кеш_форм растет на модуле fivestar (голосование). Мне больше всего подошло решение, которое предложил Друпалас (на его сайте). В файле form.inc уменьшить время существования кеша. Сейчас - чуть легче. То есть реже приходится чистить таблицу в MySQL руками.
Но если Вам удалось таки найти решение для D7, - поделитесь, пожалуйста!
Господа, у меня сайт литературный. И люди на нем голосуют за отдельные записи. Друпал только осваиваю. Точнее - немножко ковыряю. (То есть я php умею только читать со словарём. А писать не умею).
Для целей моего сайта - Друпал максимально подходящий.
Но вот эта проблема с кешем - меня просто убивает!
Спасибо!
db_query("DELETE FROM cache_form where 'expire' < UNIX_TIMESTAMP();");"
А у Вас Друпал 6-й или 7-й?
И тут у Вас, кажется, последняя двойная кавычка лишняя - не? Может быть, я ошибаюсь, конечно же.
Это решение предлагается неоднократно в других ветках.
Это надо запихнуть в файл cron.php
Правильно?
Запихивала - не помогает. Просто не работает. Никак себя не проявляет. Хотя cron, конечно же, работает.
Может, я не туда вставляю? Я вставляю эту строчку самой последней в файле cron.php.
После неё уже ничего нет. Может, её надо куда-то повыше поставить? Куда?
Повторяю: я пробовала ВСЕ варианты, предлагаемые здесь, на Друпал.ру в 13-ти ветках.
Мне не помогло.
Поэтому я спрашиваю у kolosnitsyn, что он подразумевает под словом "написал скрипт". Может быть, что-то другое.
Спасибо.
Не надо пихать ничего в cron (т.е. править файл cron.php)
Во вложении модуль. В модуле один хук cron.
По крону выполняется указанный в комментах выше запрос к БД.
О!!!!!
СПАСИБО, БЛАГОДЕТЕЛЬ!
Так этот модуль надо везде размножить.
Запустила крон - действительно вычистил кеш_форм.
Ни один из других способов не помог.
Вы не представляете, как я благодарна!
Был рад помочь Если что - обращайтесь.
О-О-О-О... благодарности моей нет границ!
Спасибо за модуль kolosnitsyn
Спасибо! Работает! Для drupal 6 можно просто в info файле поменять 7 на 6. Наверно, всем и так понятно...
Всем пожалуйста
Мне что-то не помогло, как были базы (innoDB) 120mb так и остались, сайт совсем новый и страниц около 30. Сommerce пока даже еще не ставил, а уже такой размер!
Так Вы прямо в таблице базы данных посмотрите, какая таблица разрастается.
Может, действительно, совсем другая.
И причина в чем-то другом.
Какая таблица раздулась?
Скорее всего, это не cache_form.
Спасибо, kolosnitsyn!
С вашей помощью проблема была решена.
Спасибо!
Пожалуйста, уважаемые! Рад помочь!
Очень советую этот модуль OptimizeDB!
Подходит для Drupal 6 и Drupal 7.
- Умеет очищать таблицу cache_form по нажатию кнопки, а также по расписанию.
- Умеет оптимизировать базу и тем самым уменьшать ее размер.
- Умеет чинить таблицы базы.
- Умеет уведомлять о том что база нуждается в оптимизации по расписанию.
Только что на Drupal 6 его протестировал.
База весила 400 МБ, после оптимизации 280 МБ.