मैं शेड्यूल करने की कोशिश कर रहा हूं जो हर पांच मिनट में चलता है।

नीचे दिया गया कोड क्रॉन को सफलतापूर्वक शेड्यूल करता है, और यह WP Crontrol में दिखाई देता है, लेकिन "डूइंग ए क्रॉन!" त्रुटि लॉग में कभी प्रकट नहीं होता है।

क्या गलत हो रहा है?

add_action('do_cron_stuff_event', 'do_cron_stuff', 10, 2);

function do_cron_stuff()
{
    error_log('Doing a cron!');
}

add_filter('cron_schedules', 'cron_stuff_add_5_minute_cron_interval');

function cron_stuff_add_5_minute_cron_interval($schedules)
{
    error_log("cron_stuff_add_5_minute_cron_interval called");

    $schedules['five_minutes'] =
    [
        'interval' => 300,
        'display'  => esc_html__('Every Five Minutes')
    ];

    return $schedules;
}

register_activation_hook(__FILE__, 'cron_stuff_plugin_activation');

function cron_stuff_plugin_activation()
{
    error_log("cron_stuff_plugin_activation called");

    if (wp_next_scheduled('do_cron_stuff_event') === false)
    {
        wp_schedule_event(time(), 'five_minutes', 'do_cron_stuff_event');
    }
}

register_deactivation_hook(__FILE__, 'cron_stuff_plugin_deactivation');

function cron_stuff_plugin_deactivation()
{
    error_log("cron_stuff_plugin_deactivation called");

    wp_clear_scheduled_hook('do_cron_stuff_event');
}
0
Pikamander2 24 जिंदा 2020, 15:38
क्या आपको लॉग में cron_stuff_plugin_activation called कॉल दिखाई दे रहा है?
 – 
H. Bloch
24 जिंदा 2020, 15:53

3 जवाब

सबसे बढ़िया उत्तर

यह पता चला है कि error_log वास्तव में कॉल किया जा रहा था, लेकिन क्योंकि यह सिस्टम क्रॉन द्वारा सक्रिय किया गया था, त्रुटि लॉग आउटपुट सामान्य से भिन्न त्रुटि लॉग फ़ाइल में भेजा जा रहा था।

इसे ठीक करने के लिए, मैंने error_log फ़ंक्शन के तीसरे पैरामीटर का उपयोग किया। आउटपुट को कस्टम लॉग फ़ाइल में भेजें।

0
Pikamander2 28 जिंदा 2020, 17:43

मुझे लगता है कि समस्या यह है कि आप 2 $accepted_args for . निर्दिष्ट कर रहे हैं

add_action('do_cron_stuff_event', 'do_cron_stuff', 10, 2);

जबकि do_cron_stuff किसी को भी स्वीकार नहीं करता है।

इसे बदलें

add_action('do_cron_stuff_event', 'do_cron_stuff', 10);

और देखें कि क्या यह काम करता है।

1
Damocles 24 जिंदा 2020, 16:48
धन्यवाद, मुझे वह याद आया। मेरी समस्या कुछ अलग निकली, लेकिन तर्क गणना को भी ठीक करने की आवश्यकता थी।
 – 
Pikamander2
28 जिंदा 2020, 17:44

WP-Cron इसके द्वारा काम करता है: प्रत्येक पृष्ठ लोड पर, निर्धारित कार्यों की एक सूची की जाँच की जाती है, यह देखने के लिए कि क्या चलाने की आवश्यकता है। चलाने के लिए निर्धारित कोई भी कार्य उस पृष्ठ लोड के दौरान चलाया जाएगा। WP-Cron लगातार नहीं चलता जैसा कि सिस्टम क्रॉन करता है; यह केवल पेज लोड पर ट्रिगर होता है। यदि आप किसी कार्य को दोपहर 2:00 बजे के लिए शेड्यूल करते हैं और शाम 5:00 बजे तक कोई पृष्ठ लोड नहीं होता है, तो शेड्यूलिंग त्रुटियां हो सकती हैं। https://developer.wordpress.org/plugins/cron/

इसका मतलब है कि आपको हर 5 मिनट में बाहर से ट्रिगर(क्वेरी) /wp-cron.php करना चाहिए।

0
Dmitry 24 जिंदा 2020, 17:39