Ложное срабатывание выражения now()>expire

darkersoul
Дата: 18.01.2013 10:09:31
Здравствуйте, уважаемые! У меня творятся некоторые чудеса, которые я не могу сам логически обдумать так, чтобы от них избавиться. Есть таблица, в которой хранятся текущие товары корзины потенциального покупателя.

Картинка с другого сайта.

При добавлении строки поле EXPIRE заполняется датой таким образом

... expire=date_add(now(),interval 1 day)


Т.е. прибавляется 1 день к текущей.

Если покупатель ушел, ничего не купив, строки из этой таблицы, при соблюдении выражения, удаляются автоматически кроном каждые полчаса вот таким простейшим кодом:
delete from cart_items where now()>expire


Т.е. если дата истечения меньше даты текущей - строки удаляются. Все бы хорошо, все вроде работает. Но довольно часто я через час, а может 2 или три спонтанно лезу в корзину а там пусто. Т.е. строки почему-то удаляются по сработавшему выражению. Но ведь это не так. Я сразу наполняю корзину снова, лезу по ссылке, которая висит в кроне, потом смотрю корзину - ничего не удалено. Может я совсем уже дегенерировал? Подскажите что-нибудь. Спасибо за внимание.
Akina
Дата: 18.01.2013 10:20:04
Не понял... т.е. чел выбрал товар, ему EXPIRE выставилось на завтра, но строка удаляется сегодня через час после её добавления?

автор
строки почему-то удаляются по сработавшему выражению

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

автор
если дата истечения меньше даты текущей - строки удаляются

Дата и время. Впрочем, это мелочи.

автор
удаляются автоматически кроном каждые полчаса

А почему не CREATE EVENT?
darkersoul
Дата: 18.01.2013 19:46:41
Akina,

Приветствую! никогда не использовал create event. Это что-то типа мускул-шедулера?

Что-то на
SET GLOBAL event_scheduler=ON
выдается Access denied; you need the SUPER privilege for this operation. Написал хостеру :)

Нет, это единственная строчка запроса с удалением из этой таблицы. Сейчас наблюдаю новые строчки, добавленные сегодня утром, пока не удалились...
darkersoul
Дата: 18.01.2013 19:48:33
Akina
Не понял... т.е. чел выбрал товар, ему EXPIRE выставилось на завтра, но строка удаляется сегодня через час после её добавления?


Именно так
darkersoul
Дата: 30.01.2013 22:39:23
Опять начали удаляться записи. Удаление точно работает только в ОДНОМ месте. Код удаляет записи раньше срока, установленном в expire. Мистика блин
delete from cart_items where now()>expire
darkersoul
Дата: 30.01.2013 22:42:09
Ааа, мой косяк, при пересчете данных в корзине expire заменялся другой датой :)