imaginationmedia/magemojo-magento2-cron

用于替换 Magento 2 Cron 功能的包

安装: 52

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 45

类型:magento2-module

1.2.8-stable 2019-04-12 17:03 UTC

README

MageMojo

Cron

此模块为 Magento 2 重写了基本的 cron 功能,修复了已知错误,并提供了 cron 服务模型以控制 cron 进程的执行。

Version 1.2.8

默认的 cron 可能会重叠并填充 cron_schedule 表,这可能导致每个 cron 间隔运行的作业数量呈指数增长,直到最后 cron 一直运行而永不完成。大量的 cron 作业也可能导致托管 Magento 2 的服务器崩溃。

此模块通过接受作业的服务替换了 cron 管理。随着作业的安排,它们将被此服务用于执行。如果作业已经在运行,并且另一个具有相同作业代码的作业被拾取,则新作业将被标记为错过。防止重复作业运行,减少服务器开销。

将默认的 cron 视为一个突然出现并运行任何数量任务的工厂。如果这些任务在下一个 cron 间隔之前没有完成,它们将继续处理,但另一个工厂会突然出现并运行另一组作业,这些作业可能与原始工厂重叠。

该模块通过具有单个来源服务来删除重叠作业的可能性,该服务可以按正确顺序处理作业而不重复。始终有一个工厂在工作,以完成您的作业。

除了服务模型外,还进行了许多其他增强。例如,对更新语句中的左连接进行了重写,该语句强制对 cron_schedule 进行全表扫描以获取历史记录。语句会因为从它试图更新的同一张表中读取而锁定。

在版本 1.1 中,将 Cron 报告添加到管理界面,以显示作业代码统计信息和列出 cron 运行错误。

贡献

请参阅 CONTRIBUTING.md

好处

  • 加快 cron 的执行速度。

  • 停止数据库锁定。

  • 防止 cron 历史记录爆炸。

  • 停止 cron 进程相互超载。

  • 在系统处于可配置负载条件下时停止 cron 运行。

  • 设置最大并发 cron 进程数。

  • 设置历史记录数量。

管理员选项

Cron 启用 - 打开/关闭 cron。

最大 Cron 进程数 - 并行运行的 cron 线程数。此选项是所有定义作业的总和。例如:如果您有 5 个作业设置为午夜运行,最大 Cron 进程数设置为 1,则只有 1 个作业将顺序执行,直到所有 5 个都完成。默认 3。

PHP 二进制名称/路径 - 您从 shell 运行的 php 二进制名称。通常是 php 或 php70。您可以包含二进制文件的完整路径作为可选项。默认 php。您还可以在此处添加内联选项,例如 php -dmemory_limit=8096M,如果您想有自定义的 ini 值。

最大负载平均 - 由php函数sys.getloadavg() / CPU核心数定义。函数sys.getloadavg()报告每个正在使用的核心为1.0,就像top报告的负载平均一样。CPU核心数从/proc/cpuinfo中获取,并将负载平均除以这个数字。示例:如果您有8个核心,您正在使用6个,则返回值为0.75。如果您的最大负载平均为0.76,则cron将不会运行。当您的负载平均降至0.74时,cron将运行。任何预定运行但未运行的cron都将运行。如果同一cron错过多次,则最近的工作将运行,其余的将被标记为错过。默认值为0.75(您可用CPU的75%)。

历史保留 - 在cron_schedule表中保留的历史天数。默认为1天。

Composer安装

  • 在您的终端中运行以下命令:
composer require imaginationmedia/magemojo-magento2-cron
php bin/magento module:enable MageMojo_Cron
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy

许可协议

License: MIT