1

我想找出我的清洁日志功能的问题。我正在使用 Magento 1.7 并通过 cron.sh 让 magento 的 cron 工作(已经在数据库中签入 - cron_schedule)。

问题:启用清理日志后,我的日志表仍然已满,并且在 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

一件重要的事情(最难的部分):我需要在没有社区维护脚本或任何非内置解决方案的情况下解决这个问题。

任何帮助将不胜感激!

4

3 回答 3

1
  1. 如果您的 cron 已设置并且 crontab 设置是根据频率设置的,则应清理日志。

  2. 我的想法是由于一些错误。通常超时或内存错误,您的 cron 无法完成其执行。Ss 检查您的日志和 var 报告,如果由于 cron 有任何异常。

于 2013-05-27T16:04:19.070 回答
0

日志数据库表之间的关系可能会被破坏(例如在手动清理之后)。如果您怀疑可能存在问题,请尝试检查您的数据库:

如果数据库查询

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 是日限制。它可以帮助你。

于 2017-12-13T08:25:08.597 回答
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 缓慢膨胀。

于 2019-06-24T19:05:49.660 回答