ক্রোন জব দ্বারা কল করা ফাংশন পরীক্ষা করুন


13

আমার একটি ফাংশন রয়েছে যা আমি কেবল ক্রোন কাজের মাধ্যমে চালাতে চাই। আমি কি কোনও উপায় পরীক্ষা করে দেখতে পারি যে কোনও নির্দিষ্ট সময় নির্ধারিত ইভেন্ট এই ফাংশনটিকে কল করছে এবং অন্য কিছু নয়?


3
বিটিডব্লিউ: পুরস্কৃত না হলে আপনি অনুগ্রহ ফিরিয়ে পাবেন না। যেমন আপনি ইতিমধ্যে একটি উত্তর সমাধান হিসাবে চিহ্নিত করেছেন, দয়া করে ব্যবহারকারীকে অনুগ্রহও দিন। ধন্যবাদ।
কায়সার

উত্তর:


18

ওয়ার্ডপ্রেসের একটি ধ্রুবক রয়েছে DOING_CRONযা আমাদের ক্রোন জবগুলি করছি বা না তা জানতে সহায়তা করে। এটি wp-cron.phpফাইলের মধ্যে সংজ্ঞায়িত করা হয়েছে ।

সুতরাং, আপনি আপনার কোডটিতে এই ধ্রুবকটি পরীক্ষা করতে পারেন:

if ( defined( 'DOING_CRON' ) )
{
    // Do something
}

2
ওয়ার্ডপ্রেস হিসাবে 4.8.0 wp_doing_cron()পরিবর্তে ব্যবহার করা যেতে পারে।
জো

2

আমি # 18017 প্রশ্নের জন্য লিখেছি এমন »ক্রোন এপিআই পরিদর্শক at একবার দেখুন । প্লাগইনটি একটি টেবিল তৈরি করে যা পৃষ্ঠার - হুক / পৃষ্ঠায় প্রদর্শিত হয়।shutdown

এটি _get_cron_array()সমস্ত নিবন্ধিত ও তফসিলযুক্ত ক্রিয়াকলাপ পুনরুদ্ধার করতে ফাংশনটি ব্যবহার করে । আরেকটি দরকারী ফাংশন wp_get_schedules()। তৃতীয় উপায়টি কল করার _get_cron_array()মাধ্যমে সরাসরি অন্তর্নিহিত ডেটা কল করা হয় get_option( 'cron' );- ডাব্লুপি কোর থেকে ডিফল্ট এপিআই ফাংশনগুলি ব্যবহার করা আরও ভাল।

আপনি যদি বর্তমানে ক্রোন জবের মধ্যে রয়েছেন তা যদি জানতে চান তবে আপনি পরীক্ষা করতে পারেন defined( 'DOING_CRON' ) AND DOING_CRON


1

আমি বিকাশ অধ্যয়ন করছি না (আমি কেবল উত্সাহী) তবে আমি মনে করি আপনি ইভেন্টটিতে একটি যোগ যোগ করতে পারেন

এটি কেবল একটি জীবনবৃত্তান্ত ...

//to the event
if(your_condition)
{
    add_action('original_event_to_hook', 'your_scheduled');
}

function your_scheduled()
{
    //create a param here
    //And shedule your function with arg
    wp_schedule_event(time(), 'hourly', 'your_function', array('param_1' => value));
}

function your_function($args){

   $verification = $args['param_1'];
   if($verification)
   {
      //OK
      //Eventually delete this schedule with this specific arg
   }
}

আপনার ক্রোন "your_function" এর একটি তালিকা পুনরুদ্ধার করতে যেখানে এই আর্গ রয়েছে

     //Get a filtered list of cron hooks 
        function kw_filter_crons_hooks($hooks = false, $args = false)
        {
            $crons = get_option('cron');

            if (!$crons)
            {
                $crons[0] = NULL;
            }

            $filter = array();
            $cronlist = array();
            $schedule = array();

            foreach($crons as $timestamp => $cron)
            {
                //@param $hooks = string 'schedule'
                //@param $args = false
                //Return an array of cron task sheduled
                $schedule[] = $cron;

                if(!$schedule && $hooks == 'schedule' && $args == false)
                {
                    $schedule[0] = NULL;
                }

                foreach($hooks as $hook)
                {
                    if(isset($cron[$hook]))
                    {
                        //@param $hooks = array($hook);
                        //@param $args = false
                        //Return an array of cron task sheduled
                        $cronlist[] = $cron;

                        if(!$cronlist && is_array($hooks) && $args == false)
                        {
                            $cronlist[0] = NULL;
                        }

                        if(!empty($args))
                        {
                            foreach($cronlist as $key => $value)
                            {
                                foreach($value as $k => $v)
                                {
                                    foreach($v as $x => $y)
                                    {
                                        foreach($args as $arg => $val)
                                        {
                                            if ($y['args'][$arg] == $val)
                                            {
                                                //@param $hooks = array($hook);
                                                //@param $args = array($arg);
                                                //Return an array of cron task specified filtered by arg
                                                $filter[$x] = $y;
                                                if(!$filter && is_array($hooks) && is_array($args))
                                                {
                                                    $filter[0] = NULL;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }


            if(is_array($hooks) && $args === false && $cronlist)
            {
                return $cronlist;
            }
            else if(is_array($hooks) && is_array($args) && $filter)
            {
                return $filter;
            }
            else if($hooks === 'schedule' && $args === false && $schedule)
            {
                return $schedule;
            }
            else if($hooks === false && $args === false && $crons)
            {
                return $crons;
            }
            else
            {
                return false;
            }
        }

//Usage
    $cron_filtered = kw_filter_crons_hooks(array('your_function'), array('param_1' => value));
    var_dump($cron_filtered);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.