我有以下问题。

1)Magento提供 cron.php, shell/log.php & shell/indexer.php

我已经将它们设置为如下。这些只是设置的示例。这些可以修改为适当的输出/功能/调度。

*/60 * * * * sudo /opt/lampp/bin/php /opt/lampp/htdocs/magento/shell/log.php clean >> /opt/lampp/htdocs/magento/var/log/cronlog.txt

*/60 * * * * sudo /opt/lampp/bin/php /opt/lampp/htdocs/magento/shell/indexer.php reindexall >> /opt/lampp/htdocs/magento/var/log/cronindexer.txt

*/60 * * * * sudo /opt/lampp/bin/php /opt/lampp/htdocs/magento/cron.php clean >> /opt/lampp/htdocs/magento/var/log/croncron.txt

这是正确的设置,还是仅设置cron.php可以完成所有操作,即删除日志,执行索引,清理缓存等等。

2)Magento在后端提供了CRON设置(系统 - > config-> system-> cron(计划任务) - 所有时间都在几分钟内),我们在其中输入任务频率。通过再次设置此选项,我们需要转到上面描述的选项1。因此,在两种情况下(crontab&后端设置)给出频率/时间的目的是什么?将考虑什么时间/频率。

我显然不明白这一点。谁能扔一些灯?

有帮助吗?

解决方案

输出

您将输出重定向到日志文件 - 很好 - 但是这些日志可能会随着时间的流逝而肿,或者充满了您无意查看的警告和错误。至少,使用/var/log/中的标准.log扩展名配置这些文件,并配置logrotate作业以在一段时间后压缩它们。

但是,我根本不会重定向输出。原因是CRON作业期间的任何输出都将登录到/var/log/cron文件。此外,可以将crontab配置为每个用户,以通过电子邮件发送输出。有一些洋红色模块在CRON过程中返回自己的模型,因此Magento记录了模型的名称 - 将其存储在CRON日志数据库表中。这对我来说是不可取的,也是无用的。

您可以使用来自AOE和@fbrnc -AOE_SCHEDULER的人们的出色插件来获取运行日志的视觉概述。它的位置在Github上: https://github.com/fbrnc/aoe_scheduler

Sudoer

应该没有理由执行PHP作为Sudoer,因为所讨论的PHP脚本只会伸出并触摸DB。他们只需要阅读访问。

indexer.php

每小时重新索引也是不必要的。我会安排索引器在一夜之间,可能或在您的非高峰时段运行。

cron.php

我每30-60都会做清洁cron logs , ,不是小时。您仍然需要配置一个作业 明确清洁cron,而是单独调用cron.php。应该设置一次以每5至10分钟运行一次。 Magento提前15分钟安排作业,但只能像您的Cron运行一样经常运行它们。就个人而言,我将Cron.php配置为每5分钟运行一次。

关于是将CRON作为PHP过程还是Shell脚本进行的争论。从我的理解中,如果您以PHP的形式运行它,则如果上一个实例仍在最后的CRON执行中运行,则不会阻止下一个调度程序请求,这是可取的。如果使用BASH脚本,它将阻止。如果您不希望同时运行工作,那么您希望如何运作取决于您。

log.php

这是每晚跑步的好人 之前或之后 您的索引器完成。如果您有大的DB,我建议您在2-3小时之前将其隔开,因为您的索引可能需要几个小时才能完成,尤其是如果您启用了平坦的目录。

如果您从未运行过或很少运行它,则可能需要运行 log.php clean 第一次没有其他计划的作业,您可能需要在商店上启用维护消息。原因是,根据我的经验,对日志表的任何锁定都会给您的商店中的客户带来重大的可见问题。

因为日志表存储在数据库中,请写入排列后的写入,并且可以是世界末日(我在其访问者日志表中有100mm记录的客户端 - 我们只需要脱机,截断并启动并开始在维护窗口期间无法完成;没有删除工作)。

我希望这有帮助。祝您好运。

许可以下: CC-BY-SA归因
scroll top