Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Время последнего изменения таблицы
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
Всем доброго времени.
Делаю корзину заказчику, без регистрации и авторизации (так надо заказчику).
Т.к. постоянной БД пользователей нет, ставлю каждому уникальному посетителю куку вида
а потом создаю временную таблицу с тем же именем, что и значение куки.
Сама корзина работает так:
Проверяет, стоит ли кука
--- Если стоит -
------ Проверяет, есть ли соответствующая таблица в БД
--------- Если есть - записывает туда товар
--------- Если нет - создает таблицу и записывает товар
--- Если не стоит -
------ Ставит куку, создает таблицу и записывает товар
При каждой успешной записи кука продлевается на сутки.
Хочу написать скрипт, который будет раз в час (cron) чистить базу от таблиц, изменения в которых проводились более чем 24 часа назад. Как узнать дату последней модификации таблицы? Вариант с доп.полем даты/времени в каждой таблице не хочу, есть причины. Логи парсить тоже нет особого желания. Есть какой-нибудь другой вариант? Заранее спасибо.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
На каждую такую куку - таблицу? Что-то не в порядке с архитектурой. Храните все в одной таблице, привязывая товары корзины к пользователю.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Мелкий
Отправлено: 14 Сентября, 2012 - 09:33:34
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Пишите в одну таблицу. Здесь вполне уместна простая сериализация данных в text'овое поле.
Vinyl пишет:
Как узнать дату последней модификации таблицы?
На сколько помню, эта цифра не хранится за ненадобностью. Можно смотреть по дате модификации соответствующий файлов, в принципе.
----- PostgreSQL DBA
Vinyl
Отправлено: 14 Сентября, 2012 - 09:42:05
Частый посетитель
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
EuGen пишет:
На каждую такую куку - таблицу? Что-то не в порядке с архитектурой.
А чем плох такой вариант? По мне так наоборот, чем для каждого запроса будет перебираться огромная единственная таблица (у них за один заказ могут 300-400 наименований взять, клиентов в онлайне - 50-100), легче под каждого пользователя таблицу сделать.
Мелкий пишет:
Можно смотреть по дате модификации соответствующий файлов, в принципе.
Нельзя. InnoDB одним файлом всю базу хранит. (Добавление)
Кстати, насчет
Vinyl пишет:
InnoDB одним файлом всю базу хранит.
Т.е., в принципе, база итак вся перебирается, только не php, а движком MySQL, так? Может тогда целесообразней на MyISAM работать?
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Vinyl пишет:
Нельзя. InnoDB одним файлом всю базу хранит.
innodb_file_per_table
Vinyl пишет:
чем для каждого запроса будет перебираться огромная единственная таблица
Memcache и пускай себе перебирается для промахов кэша. К тому же, зачем её перебирать? Будет только некоторый оверхед на пересчёт индексов при добавлении новый сессий, но 1 запрос на добавление сессии от юзера - ничто на общей нагрузке.
Если у вас десятки миллионов открытых сессий - можете партицировать по первым символам md5, который даёт вполне нормальное распределение. Но по таблице на сессию никто в здравом уме не делает.
----- PostgreSQL DBA
Vinyl
Отправлено: 14 Сентября, 2012 - 10:27:57
Частый посетитель
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
Мелкий пишет:
innodb_file_per_table
Не дадут скорее всего. Там хостинг, причем не лучший. Хотя не сталкивался, можно попробовать.
Мелкий пишет:
Но по таблице на сессию никто в здравом уме не делает.
Почему? Причина же какая-то есть? Интересно просто.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.