【问题标题】:Drupal 6 - Captcha 6.24 - Cron fails to truncate captcha_sessions tableDrupal 6 - Captcha 6.24 - Cron 无法截断 captcha_sessions 表
【发布时间】:2014-06-03 16:24:02
【问题描述】:

环境:

Drupal 6 验证码 6.24

问题

今天模块开始出现问题。关于正在发生的事情的第一个线索是通过 Reports > 最近的日志条目 。它被以下问题困扰:

Duplicate entry ***** for key ******  query: 
INSERT into captcha_sessions (uid, sid, ip_address, timestamp, 
form_id, solution, status, attempts) VALUES (....) 

不出所料,桌子很大,我说的是超过 25mbs。我的印象是 Drupal 的 cron 在运行时负责删除该表中的数据(以及日志)。因为它是 Drupal 6,所以我转到 poormanscron 并让它运行......但没有任何改变。

我的临时解决方案是手动截断所述表。但令我烦恼的是 Drupal 的 cron 并没有自己这样做。所以,我想知道,我唯一的机会是用自定义脚本服务器端保持这个表的大小吗?

我需要设置什么以便 Drupal 的 cron 删除日志并清除该表吗?由于是 Drupal 6,我很迷茫,因为在 Drupal 7 中我可以创建一个 cron 作业。

提前致谢。

编辑

此函数可在captcha.module 文件中找到。但它并没有像它说的那样做,表格永远不会被截断。

function catpcha_cron{
   db_query('DELETE FROM {captcha_sessions} WHERE timestamp < %d', time() - 60*60*24);
}

【问题讨论】:

  • 检查日志是否有错误...captcha_cron()“删除超过 1 天的挑战”所以如果你的 cron 正在运行,要么应该发生这种情况,要么你至少应该看到一个错误
  • 我不确定我是否理解。我去了最近的日志条目,在那里我已经被 cron 过滤了。我所看到的只是 4 个 Cron 运行完成的条目……除此之外还有一个非成员。我要做的是在模块中创建该 captcha_cron() 函数,或者首先查看它是否在其中并在那里执行我的表截断。

标签: drupal cron captcha


【解决方案1】:

在我的情况下,我需要截断比时间戳更早的挑战,而不是比一天更早的挑战,因为桌子很快就被填满了,而且我没有太多空间可供使用。我所做的只是更改模块中负责截断 captcha.module 的函数。

function catpcha_cron{
   db_query('DELETE FROM {captcha_sessions} WHERE timestamp < %d', time());
}

ps:我赞成@Clive 的评论,因为它引导我走上了正确的道路。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多