WordPress - остановка процесса для «фоновой обработки WP» - PullRequest
0 голосов
/ 02 мая 2019

Я использую фоновую обработку WP https://github.com/deliciousbrains/wp-background-processing, чтобы создать фоновый процесс, который перемещает некоторые файлы на другой сервер.

Все работает хорошо, я могу выбрать файлы, добавить тему в очередь и начать движение. Все работает хорошо, но как только процесс запущен, я не могу его остановить. Я хочу иметь возможность остановить фоновый процесс в случае, если я передумал во время передачи файла.

Я создал функцию ajax, которая вызывает эту функцию php.

function me_stop_moving_files(){
    global $wpdb;
    $sql = "SELECT `option_name` AS `name`, `option_value` AS `value`
            FROM  $wpdb->options
            WHERE `option_name` LIKE %s
            ORDER BY `option_name`";


    $wild = '%';
    $find = 'wp_example_process';
    $like = $wild . $wpdb->esc_like( $find ) . $wild;
    $results = $wpdb->get_results( $wpdb->prepare($sql,$like) );

    foreach ( $results as $result ){
        delete_option($result->name);
    }

    $this->process_all->cancel_process();
    wp_clear_scheduled_hook('wp_example_process_cron');

    die('completed');
}

Где cancel_process () - это метод класса wp-background-process.php. На первый взгляд кажется, что процесс остановлен, но рано или поздно он начинается снова.

Кто-нибудь имеет опыт работы с этой библиотекой и может указать мне правильное направление?

1 Ответ

0 голосов
/ 02 мая 2019

Я раньше не использовал библиотеку, но, глядя на код, кажется, что процессы можно отменить, вызвав метод класса следующим образом:

function me_stop_moving_files(){
    global $wpdb;
    $sql = "SELECT `option_name` AS `name`, `option_value` AS `value`
            FROM  $wpdb->options
            WHERE `option_name` LIKE %s
            ORDER BY `option_name`";


    $wild = '%';
    $find = 'wp_example_process';
    $like = $wild . $wpdb->esc_like( $find ) . $wild;
    $results = $wpdb->get_results( $wpdb->prepare($sql,$like) );

    foreach ( $results as $result ){
        delete_option($result->name);
    }

    $WP_Background_Process = new WP_Background_Process();
    $Cancel_process = $WP_Background_Process->cancel_process();
    die('completed');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...