Wordpress cron không được lên lịch trên các dịch vụ web của amazon


8

Tôi đang cố gắng thiết lập một cron để chạy mỗi giờ, nó hoạt động tốt trên hộp âm thanh cục bộ của tôi, nhưng dường như nó không được lên lịch chính xác trên aws (cây đậu đàn hồi). Đây là mã:

register_activation_hook(__FILE__, 'my_activation');
add_action('my_hourly_event', 'do_this_hourly');

function my_activation() {
    wp_schedule_event(time(), 'hourly', 'my_hourly_event');
}

function do_this_hourly() {
    another_function();
}

register_deactivation_hook(__FILE__, 'my_deactivation');

function my_deactivation() {
    wp_clear_scheduled_hook('my_hourly_event');
}

là một cái gì đó sai với điều này, hoặc là một cái gì đó khác chơi?

Tôi đã cài đặt toàn bộ bộ nhớ cache w3 cả cục bộ và trên aws, vì vậy tôi không nghĩ đó là điều đáng trách, vì tôi đã nghe mọi người đề cập đến nó.

Cảm ơn.


2
API cron WordPress (theo mặc định) dựa trên lần truy cập HTTP - nếu thiết lập của bạn được lưu trữ mạnh mẽ, WordPress có thể không bao giờ thực sự bắn (hoặc ít nhất là không đủ thường xuyên) để kích hoạt cron. Bạn có thể muốn đọc cách "thiết lập" cron đúng cách trong WordPress .
TheDeadMedic

1
Cảm ơn đã trả lời nhanh chóng! Tôi đã bắt đầu đọc liên kết bạn cung cấp, nhưng tôi phải lưu ý rằng cron không bao giờ được lên lịch, nó không xuất ra khi thực hiện các thao tác sau: $ cron_jobs = get_option ('cron'); print_r ($ cron_jobs);, trong khi tại địa phương, đoạn trích đó cho tôi thấy những gì tôi đang tìm kiếm.
aabreu


Có tại địa phương, không phải trên máy chủ.
aabreu

Bật nó lên và kích hoạt plugin, xem bạn có gặp lỗi gì không.
TheDeadMote

Câu trả lời:


1

Là hiệu trưởng chung, bạn không nên làm bất cứ điều gì yêu cầu 'add_action' sau móc kích hoạt plugin. Điều này là do WP tải và chạy tất cả các plugin và THEN chạy cái mới được thêm vào, và sau đó thực hiện lại trực tiếp. Bạn phải đặt tùy chọn DB và nối vào đó. Đây là cuộc thảo luận từ CODEX: https://codex.wordpress.org/Function_Reference/register_activation_hook

Hãy thử làm điều này bên ngoài móc kích hoạt và xem điều gì xảy ra. Nói cách khác, PHP chạy qua toàn bộ thói quen Wordpress trên mỗi yêu cầu trình duyệt. Khi bạn 'kích hoạt' một plugin, bạn thực sự thực hiện hai yêu cầu trang đến máy chủ. Loại hoạt động này đi đúng trong yêu cầu trang 2, đó là hướng dẫn lại.


0

Bạn có thể sử dụng các bước này để làm cho nó hoạt động: ` 1. Thiết lập lịch trình

function my_schedule( $schedules ) {
    $schedules['hourly'] = array(
        'interval' => 60 * 60,
        'display' => __( 'One houre' )
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'my_schedule' );

2. Đăng ký móc kích hoạt

register_activation_hook( __FILE__, 'my_activation' );

function my_activation() {
    $timestamp = wp_next_scheduled( 'my_hourly_event' );
    if( false == $timestamp ){
        wp_schedule_event( time(), 'hourly', 'my_hourly_event' );
    }
}

3. Thêm hành động cho sự kiện

function do_this_hourly() {
    // The cron functionality and rest of your code here
}
add_action( 'my_hourly_event', 'do_this_hourly' );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.