Поддержка Проблемы и решения Перестал работать wp_cron

  • Здравствуйте! Сегодня обнаружил, что мой плагин, использующий wp_cron, перестал работать. Подумал, может с сайтом какой-то косяк, проверил на другом сайте — тоже не работает. Написал элементарный код, чтоб убедиться, что это ошибка не в коде — и даже элементарный код не сработал

    вот этот код:

    add_filter('cron_schedules', 'add_new_schedules');
    function add_new_schedules($schedules){ // Функция добавления нового промежутка времени
    	$schedules['ten_sec']=array(
    		'interval'=>10,
    		'display'=>'Every 10 sec'
    	);
    	return $schedules;
    }
    
    // wp_clear_scheduled_hook('my_task_hook');
    if ( ! wp_next_scheduled( 'my_task_hook' ) ) {
      wp_schedule_event( time(), 'ten_sec', 'my_task_hook' );
    }
    
    add_action( 'my_task_hook', 'my_task_function' );
    
    function my_task_function() {
      echo '<script type="text/javascript">alert("Hello");</script>';
    }

    Ещё раз уточную, проверял на 3-х сайтах и на разных хостингах — код не работает. Кто может подсказать, в чём причина и как она лечится?

    p.s. Код размещал как в файл функций, так и отдельным плагином.
    p.p.s. Проверял на ВП версии 4.0.1, 4.1
    p.p.p.s. Расписание создаётся, записывается в базу данных, но не выполняется

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Не вникал глубоко в суть проблемы, чуть позже посмотрю, но, мне кажется, не работает, потому что через крон нельзя выводить что-либо. Можно лишь производить какие-то действия, например, отправлять эл. письма, добавлять что-то в БД, создавать файлы и т. п. Другими словами все, что не делает вывод.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    через крон нельзя выводить что-либо.

    Верно. Крон выполняется отдельным внутренним запросом, результат которого на экран не выводится.

    Если вообще никакие действия не работают (отправка писем и т.д.) — проблема обычно в том, что на сервере запрещены локальные HTTP-соединения.

    За вывод не знал, спасибо. Но вывод я написал для наглядности. На самом деле он ни письма не отправляет, ни в файл не записывает, и даже в БД изменений не вносит. Хотя раньше на этом же хостинге всё это работало. Но я проверил работу крона ещё на 2-х других платных хостингах — и там он не работает. Не может ли это быть проблема в 2-х последних версиях вордпресса?

    Sergey Biryukov, прочитал по вашей ссылке про Alternative Cron. Попробовал установить. И крон заработал!!! Но в адресной строке в конце адреса начал появляться такой get-запрос:
    &doing_wp_cron=1422257913.4348089694976806640625

    Как теперь избавиться от него?

    И опять же, не понятно, почему раньше крон работал без Alternative Cron, а сейчас перестал…

    Я что то не понял что подразумевалось под алтернативным кроном и что именно ты сделал.

    В вашем случае варианты:
    1) запуск планировщика WP c помощью планировщика ОС хостинга (линуксовый cron). Очень часто cron-правила можно добавлять в админ-панелях хостеров. Этот вариант самый точный (не зависит от посещаемости).
    2) запуск планировщика WP с помощью сторонних сервисов
    3) поменять хостинг (ну мало ли)

    по 2-му пункту 15-й слайд здесь

    versusbassz, к сожалению, эти способы не подходят. Под мои задачи нужен именно вордпрессовский, т.к. скрипт должен выполняться на многих сайтах с разными хостингами. Меня терзает всё та же мысль — почему раньше работал, а сейчас перестал? И точно не уверен, но вроде бы перестал работать после обновления вордпресс на последнюю версию (на моё удивление, обновление произошло автоматически и на всех сайтах).

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Перестал работать wp_cron» закрыта для новых ответов.