Как я могу Запланировать Задание cron на основе значений конфигурации администратора


Я создал задание cron в соответствии со стандартным методом

Vendor\Module\etc\crontab.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">

     <group id="default">
        <job name="my_cronjob" instance="Vendor\Module\Cron\Clean" method="execute">
            <schedule>00 00 * * *</schedule>
        </job>
    </group>
</config>

В Моем

Vendor\Module\Cron\Clean.php

class Clean extends \Magento\Backend\App\Action
{
    /**
     * @var connection
     */
    private $connection;

    protected $_logger;
    public function __construct(
        \Magento\Backend\App\Action\Context $context,
        \Psr\Log\LoggerInterface $logger
    ) {
        $this->_logger = $logger;ory;
        parent::__construct($context);
    }
    public function execute()
    {
        $this->_logger->debug('Sync Starts!!');
    }
}

Чтобы запланировать cron, я создал конфигурацию администратора как

enter image description here

Мой вопрос в том, как я могу запланировать cron на основе этих полей

Author: Waqar Ali, 2019-10-28

1 answers

Возможно, это ваша идея, вам следует создать конфигурацию:

  • crontab.xml

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
    <group id="default">
        <job name="masteringAddItem" instance="Mastering\SampleModule\Cron\AddItem" method="execute">
            <config_path>mastering/general/cron_expression</config_path>
        </job>
    </group>
</config>

  • adminhtml/system.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <tab id="mastering" translate="label" sortOrder="10000">
            <label>Mastering</label>
        </tab>
        <section id="mastering" translate="label" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
            <label>Mastering</label>
            <tab>mastering</tab>
            <resource>Mastering_SampleModule::mastering</resource>
            <group id="general" translate="label" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
                <label>Item creation by schedule</label>
                <field id="enabled" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
                    <label>Enabled</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="cron_expression" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="0" showInStore="0" canRestore="1">
                    <label>Add Item Cron Expression</label>
                </field>
            </group>
        </section>
    </system>
</config>

Время настройки для conjob на странице администратора!

 2
Author: Jundat95, 2019-10-28 07:17:45