मैगनेटो 2: एक्सॉन्यूट क्रोन


11

मैं क्रोन को कमांड लाइन से मैन्युअल रूप से कैसे निष्पादित कर सकता हूं

Magento 1.x में हम क्रोन जैसे चला सकते हैं:

www.testsite.com/cron.php 

लेकिन Magento 2 में मैं यह कैसे कर सकता हूं?

कृपया मेरी मदद भी करें कि मैं cmd ​​से क्रोन को कैसे निष्पादित कर सकता हूं। मैंने पहले ही कमांड के नीचे प्रयोग किया है जो काम नहीं कर रहा है:

sudo php bin/magento cron:run [--group="customgroupname_cron"]

यह अपवाद है:

[RuntimeException]   
Too many arguments.  

cron:run [--group="..."] [--bootstrap="..."]

------- अपडेट करें -------

crontab.xml

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

    <group id="customgroupname_cron">
        <job name="customgroupname_cron" instance="Namespace\Modulename\Cron\Customcronjob" method="execute">
            <schedule>* * * * *</schedule>
        </job>
    </group>
</config>

उपरोक्त फ़ाइल के निष्पादन में मैं लॉग डालता हूं। लेकिन 1 मिनट के बाद भी उत्पन्न नहीं होता है। तो मुझे कैसे पता चल सकता है कि मेरी विधि निष्पादित है।


ऐसा लगता है कि, मेरे लिए एक कम से कम, जैसे आप अभी भी उन दाना 1 की तरह yoursite.com/update/cron.php करके चला सकते हैं
tim.baker

जवाबों:


17

जब आपको कमांड चलाना चाहिए तो आपको कोष्ठक की आवश्यकता नहीं है

sudo php bin/magento cron:run --group="customgroupname_cron"

हाँ यह एक प्रतिक्रिया दे रहा है कि "अनुसूची द्वारा रन नौकरियों"। लेकिन कृपया मेरे अपडेट किए गए उद्धरण की जांच करें।
कृपाली

4

मैंने इस पोस्ट के अन्य उत्तरों को थोड़ा-सा मर्ज किया - ताकि केवल एक फ़ाइल की आवश्यकता हो, और क्रोन जॉब्स को ब्राउज़र या कमांड लाइन के माध्यम से चलाया जा सके।

कमांड लाइन के माध्यम से उपयोग:

php cronLaunch.php "Vendor\Module\Class"

ब्राउज़र के माध्यम से उपयोग:

https://my.domain/hidden/cronLaunch.php?Vendor\Module\Class

स्थापना

मैं नीचे से स्रोत कोड को कॉपी करने और इसे स्टोर करने का सुझाव देता हूं src/pub/hidden/cronLaunch.phphiddenकिसी भी अनधिकृत पहुंच से निर्देशिका की रक्षा करना बहुत महत्वपूर्ण है !

<?php
require '../../app/bootstrap.php';
if (php_sapi_name() !== 'cli' && isset($_GET['job'])) {
    define('CRONJOBCLASS', $_GET['job']);
} elseif (php_sapi_name() !== 'cli') {
    die('Please add the class of the cron job you want to execute as a job parameter (?job=Vendor\Module\Class)');
} elseif (!isset($argv[1])) {
    die('Please add the class of the cron job you want to execute enclosed IN DOUBLE QUOTES as a parameter.' . PHP_EOL);
} else {
    define('CRONJOBCLASS', $argv[1]);
}

class CronRunner extends \Magento\Framework\App\Http
    implements \Magento\Framework\AppInterface
{

    public function __construct(
        \Magento\Framework\App\State $state,\Magento\Framework\App\Response\Http $response)
    {
        $this->_response = $response;
        $state->setAreaCode('adminhtml');
    }

    function launch()
    {
        $cron = \Magento\Framework\App\ObjectManager::getInstance()
            ->create(CRONJOBCLASS);

        $cron->execute();
        return $this->_response;
    }
}

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$app = $bootstrap->createApplication('CronRunner');
$bootstrap->run($app);

धन्यवाद और अन्य सभी लोगों को श्रेय देता हूं जिन्होंने यहां उत्तर पोस्ट किए हैं!


3
cron:run [--group="..."] [--bootstrap="..."]

[]एक कमांड लाइन प्रोटोटाइप में कोष्ठक केवल संकेत मिलता है कि तर्क उनमें शामिल वैकल्पिक हैं।
इस मामले में, यह भी कहा गया है कि वे चेनेबल हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.