Функция для запуска скрипта раз в сутки
-
Всем привет. Подскажите пожалуйста. В WP есть такая функция, которая будет запускать скрипт раз в сутки? Например для создания файла XML и обновления данных в БД.
-
Спасибо, буду изучать.
Помогите разобраться из-за чего может не работать 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'); }
из-за чего может не работать wp-cron
1. Из-за отсутствия посетителей на сайте.
2. Из-за неспособности http-сервера установить исходящее соединение с самим собой.
3. из-за фатальной ошибки какой-то из функций, вызываемых хроном.
и т.д. и т.п.Ну да. Запланированоя публикация записи не работает.
1. пункт отпадает.
2. это надо в поддержку хостинга?
3. тут можно просто поставить чистую cms и посмотреть будет работать cron или нет?Для начала посмотрите в логах сервера, есть ли вызовы 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 «-»
403 Forbidden
Сервер по какой-то причине запретил себе доступ к хрону.
Берите помощь техподдержки хостинга.А как им правильно вопрос задать? чтобы они поняли о чем вообще речь идет?
Показать эту строчку из лога и спросить «почему 403?»
Не, не исключено, что у Вас стоит какой-то неправильный плагин для пущей безопасности, и он с перепугу закрыл все, что надо и не надо. Но, я думаю, Вы бы заметили. Да и проверить это довольно просто: открыть в браузере //сайт/wp-cron.php и посмотреть код возврата (если что, у браузеров по F12 вызывается панель разработчиков, на вкладке «сеть» видно что вызывалось и чем ответило). Если для «снаружи» 200, то проблема с конфигурацией сервера.
если что, у браузеров по F12 вызывается панель разработчиков, на вкладке «сеть» видно что вызывалось и чем ответило
/public_html/wp-includes/cron.php
GET 404 Not Found
Не тот файл смотрел
wp-cron.php 200
/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 срабатывает каждый раз когда кто-то заходит на сайт?
Я правильно понял, что файл wp-cron.php срабатывает каждый раз когда кто-то заходит на сайт?
wp-cron.php срабатывает каждый раз, когда его вызывают 😉
А вызывают его тогда, когда есть запланированная задача.
- Тема «Функция для запуска скрипта раз в сутки» закрыта для новых ответов.