我有一个完整的电子邮件用户数据库,他们使用DATETIME类型列出了他们在名为signup_date的列中注册的日期和时间(它使用now()
),我还有一个expire_date列,列出了相同的格式但仅仅一年后使用ADDDATE(NOW(), INTERVAL 365 DAY)
我添加了一个状态列,其值为0或1.我猜这可以是ENUM类型。注册后,状态设置为1表示活动。
我想要的是,如果expire_date的时间戳早于当前时间,则cron应该在用户的那一行上执行更新,将状态设置为0.在postfix中,我更改了查询并附加了状态= 1,以便选择状态为1的用户。如果状态不是1,则找不到用户,也无法登录。此cron可以每天运行。我不是太肛门让它每秒跑一次。用户可以在第二天内续订他们的电子邮件。所以这是我过期电子邮件的简单方法,如果他们在一年后不活跃或不活跃。我需要帮助的是构建cron。这应该只用PHP完成还是需要使用一些bash?我不清楚如何构建脚本。感谢。
答案 0 :(得分:0)
为什么要维护一个额外的标志列?您可以动态计算状态
SELECT *
FROM table_name
WHERE expire_date > NOW()
这将仅返回未到期的行
如果您需要将状态生成为列,则可以执行
SELECT *, (expire_date > NOW()) status
FROM table_name