我想找到清洁日志功能的问题。 我正在使用Magento 1.7并使用magento的cron工作(已在数据库中检查 - cron_schedule)cron.sh.
问题:启用清理日志后,我的日志表仍然已满,而且我在cron_schedule表中没有看到任何相关内容!
我的系统>配置>系统
CRON(SCHEDULE TASK)
Generate Schedules Every 60
Schedule Ahead for 1
Missed if Not Run Within 60
History Cleanup Every 120
Success History Lifetime 120
Failure History Lifetime 120
============================
LOG CLEANING
Save Log, Days 1
Enable Log Cleaning YES
Start Time 00:30:00
Frequency DAILY
Error Email Recipient MYEMAIL@BLABLA.COM
Error Email Sender GENERAL CONTACT
Error Email Template LOG CLEANUP WARNING
一个重要的事情(最困难的部分):我需要在没有社区维护脚本或任何非内置解决方案的情况下解决这个问题。
任何帮助将不胜感激!
答案 0 :(得分:1)
如果您的cron已设置且crontab设置按频率设置,则应清理日志。
我的想法是由于一些错误。通常超时或内存错误,您的cron无法完成其执行。 如果有任何问题,请检查您的日志和var报告。
答案 1 :(得分:0)
日志数据库表之间的关系可能会被破坏(例如,在手动清理之后)。如果您怀疑可能存在问题,请尝试检查您的数据库:
如果是DB查询
SELECT COUNT(*) FROM log_url LEFT JOIN log_visitor ON (log_url.visitor_id = log_visitor.visitor_id) WHERE log_visitor.visitor_id IS NULL
返回正数,然后有一些与任何访问者无关的日志记录。这些记录从未通过日志清理删除。在那种情况下执行
DELETE FROM log_url WHERE visitor_id NOT IN (SELECT visitor_id FROM log_visitor)
之后再次执行清理日志。在控制台终端执行
php -f shell/log.php -- clean --days X
其中X是天数限制。它可以帮助你。
答案 2 :(得分:0)
这是因为清除程序依赖于log_表中与report_event相关的信息,因此它不只是从每个表中进行删除,如下所示:
sendto(4, "\370\0\0\0\3SELECT `event_table`.`event_id` FROM `report_event` AS `event_table`\n LEFT JOIN `log_visitor` AS `visitor_table` ON event_table.subject_id = visitor_table.visitor_id WHERE (visitor_table.visitor_id IS NULL) AND (event_table.subtype = 1) LIMIT 1000", 252, MSG_DONTWAIT, NULL, 0) = 252
sendto(4, "{\2\0\0\3DELETE FROM `report_event` WHERE (event_id IN('39848474', '39848475', '39848476', '39848477', '39848478', '39848479', '39848480', '39848481', '39848482', '39848483', '39848484', '39848485', '39848486', '39848487', '39848488', '39848489', '39848490', '39848491', '39848492', '39848493', '39848494', '39848495', '39848496', '39848497', '39848498', '39848499', '39848500', '39848501', '39848502', '39848503', '39848504', '39848505', '39848506', '39848507', '39848508', '39848509', '39848510', '39848511', '39848512', '39848513', '39848514', '39848515', '39848516', '39848517', '39848518', '39848519', '39848520', '39848521', '39848522'))", 639, MSG_DONTWAIT, NULL, 0) = 639
因此,如果log_表中没有相应的行,则可以看到report_event缓慢膨胀。