programing

두 개 이상의 Wordpress Cron을 실행하여 서로 다른 고정 간격으로 데이터베이스를 업데이트합니다.

testmans 2023. 10. 7. 09:30
반응형

두 개 이상의 Wordpress Cron을 실행하여 서로 다른 고정 간격으로 데이터베이스를 업데이트합니다.

워드프레스에서 크론 작업을 여러 번 실행했습니다.우선 이 문제에 대해 많이 검색했지만 정확한 해결책을 찾지 못했다는 점을 분명히 하고 싶습니다.그래서 여기에 글을 올렸습니다.

문제는 하나의 크론이 실행되고 있지만 다른 하나는 실행되고 있지 않으며 첫 번째 크론에 대해 3시간마다 간격을 예약했지만 이것에 대해 때때로 1분 이내에 여러 번 실행됩니다.다른 사람들은 절대로 실행하지 않습니다.

누구나 워드프레스 크론을 통해 서로 다른 고정된 간격으로 데이터베이스를 업데이트하는 두 가지 기능을 실행할 수 있는 솔루션을 제공합니다.미리 감사 드려요.

 //The activation hooks is executed when the plugin is activated
 register_activation_hook(__FILE__, 'activate_one');
 register_activation_hook(__FILE__, 'activate_two');
 //Filter for Adding multiple intervals
 add_filter( 'cron_schedules', 'intervals_schedule' );

 function intervals_schedule($schedules) {
     $schedules['threehour'] = array(
        'interval' => 10800, // Every 3 hours
        'display'  => __( 'Every 3 hours' )
     );
     $schedules['onehour'] = array(
         'interval' => 3600, // Every 1 hour
         'display'  => __( 'Every 1 hour' )
     );

     return $schedules;
  }

  //Schedule a first action if it's not already scheduled
  function activate_one() {
      if (!wp_next_scheduled('cron_action_one')) {
          wp_schedule_event( time(), 'threehour', 'cron_action_one');
      }
  }

  //Hook into that action that'll fire threehour
  add_action('cron_action_one', 'execute_one');

  function execute_one()
  {
      //Do something or update in database;
  }

  //Schedule a second action if it's not already scheduled
  function activate_two() {
      if (!wp_next_scheduled('cron_action_two')) {
          wp_schedule_event(time(), 'onehour', 'cron_action_two');
      }
  }

  //Hook into that action that'll fire onehour
  add_action('cron_action_two', 'execute_two');

  function execute_two()
  {
      //Do something or update in database;
  }

아마도 코드를 작성하고 테스트 시간 간격을 설정하는 동안 이미 다른 일정을 잡았을 것입니다.cron_action_two이벤트, 그것은 나중에 언젠가 호출될 것입니다.여기에 나와 있는 방법 중 하나를 사용하여 확인할 수 있습니다.크론 목록은 모든 것을 명확히 해야 하며, 문제가 해결될 가능성이 높습니다.

코드를 보다 안정적으로 만들고 이러한 문제를 방지하기 위해 코드에 수정해야 할 몇 가지 사항이 있습니다.

  1. 다음과 같이 플러그인 비활성화 시 예약된 이벤트를 지웁니다.

    register_deactivation_hook( __FILE__, 'my_deactivation');
    function my_deactivation() {
        wp_clear_scheduled_hook('my_hourly_event');
    }
    
  2. 활성화 시 예약된 후크 지우기(YES:wp_clear_scheduled_hook( 'my_hourly_event' );) 이미 존재하는지 확인하는 대신 (아니오:if( ! wp_next_scheduled( 'my_hourly_event' ) ))

행운을 빕니다.

언급URL : https://stackoverflow.com/questions/32498355/run-more-than-one-wordpress-cron-for-executing-two-functions-for-updating-databa

반응형