Поддержка Плагины Функция для запуска скрипта раз в сутки

  • Всем привет. Подскажите пожалуйста. В WP есть такая функция, которая будет запускать скрипт раз в сутки? Например для создания файла XML и обновления данных в БД.

Просмотр 15 ответов — с 1 по 15 (всего 27)
  • Модератор Yui

    (@fierevere)

    永子

    Спасибо, буду изучать.

    Помогите разобраться из-за чего может не работать wp-cron. Может быть такое, что корн надо еще на сервере настраивать? Или может у меня в коде какой-то функции не хватает?

    Вот такой код

    /*
    Plugin Name: Snippet XML
    Version:     1.0
    Plugin URI:
    Description:
    Author:
    Author URI:
    */
    
    register_activation_hook(WP_PLUGIN_DIR.'/snippet-xml/snippet-xml.php', 'my_activation');
    function my_activation() {
    	wp_schedule_event( time(), 'hourly', 'my_hourly_event');
    }
    
    add_action('my_hourly_event', 'do_this_hourly');
    function do_this_hourly() {
     wp_mail( 'mymail@gmail.com', 'Автоматическое письмо', 'Запланированное письмо от WordPress.');	// делаем что-либо каждый час
    }
    
    //Не забываем очистить запланированное действие при деактивации плагина:
    
    register_deactivation_hook(WP_PLUGIN_DIR.'/snippet-xml/snippet-xml.php', 'my_deactivation');
    function my_deactivation() {
    	wp_clear_scheduled_hook('my_hourly_event');
    }

    Модератор Yuri

    (@yube)

    из-за чего может не работать wp-cron

    1. Из-за отсутствия посетителей на сайте.
    2. Из-за неспособности http-сервера установить исходящее соединение с самим собой.
    3. из-за фатальной ошибки какой-то из функций, вызываемых хроном.
    и т.д. и т.п.

    Ну да. Запланированоя публикация записи не работает.
    1. пункт отпадает.
    2. это надо в поддержку хостинга?
    3. тут можно просто поставить чистую cms и посмотреть будет работать cron или нет?

    Модератор Yuri

    (@yube)

    Для начала посмотрите в логах сервера, есть ли вызовы wp-cron.php, и если есть, то какой статус ответа.

    Должно быть примерно такое:

    [01/Feb/2015:08:10:14 +0200] "POST /wp-cron.php?doing_wp_cron=1422771014.0095710754394531250000 HTTP/1.0" 200 227 "-" "WordPress/3.9.3;

    Есть такая штука.

    [02/Feb/2015:15:43:59 +0300] «POST /wp-cron.php?doing_wp_cron=1422881039.9421339035034179687500 HTTP/1.0» 403 213 «-»

    Модератор Yuri

    (@yube)

    403 Forbidden
    Сервер по какой-то причине запретил себе доступ к хрону.
    Берите помощь техподдержки хостинга.

    А как им правильно вопрос задать? чтобы они поняли о чем вообще речь идет?

    Модератор Yuri

    (@yube)

    Показать эту строчку из лога и спросить «почему 403?»

    Не, не исключено, что у Вас стоит какой-то неправильный плагин для пущей безопасности, и он с перепугу закрыл все, что надо и не надо. Но, я думаю, Вы бы заметили. Да и проверить это довольно просто: открыть в браузере //сайт/wp-cron.php и посмотреть код возврата (если что, у браузеров по F12 вызывается панель разработчиков, на вкладке «сеть» видно что вызывалось и чем ответило). Если для «снаружи» 200, то проблема с конфигурацией сервера.

    если что, у браузеров по F12 вызывается панель разработчиков, на вкладке «сеть» видно что вызывалось и чем ответило

    /public_html/wp-includes/cron.php

    GET 404 Not Found

    Не тот файл смотрел

    wp-cron.php 200

    Модератор Yuri

    (@yube)

    /public_html/wp-includes/cron.php

    Не, это совсем не то. Надо хттп://домен/wp-cron.php

    Я так понимаю именно этот код блокировал cron?

    Там же написано, для чего этот код:
    // Prevent infinite loops caused by lack of wp-cron.php
    Предотвращение бесконечного зацикливания хрона. Ну то есть, чтобы хрон сам себя не вызывал.

    Проблема была в .htaccess (файл был заблокирован)

    Сейчас смотрю логи и пытаюсь понять как работает cron. Я правильно понял, что файл wp-cron.php срабатывает каждый раз когда кто-то заходит на сайт?

    Модератор Yuri

    (@yube)

    Я правильно понял, что файл wp-cron.php срабатывает каждый раз когда кто-то заходит на сайт?

    wp-cron.php срабатывает каждый раз, когда его вызывают 😉
    А вызывают его тогда, когда есть запланированная задача.

Просмотр 15 ответов — с 1 по 15 (всего 27)
  • Тема «Функция для запуска скрипта раз в сутки» закрыта для новых ответов.