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

8 мар. 2016 г., 09:30:35
Просмотры: 16.3K
Голосов: -1

У меня возникает ошибка Apache в файле /wp-cron.php. Я не изменял этот файл. Как избежать таймаута?

2
Комментарии

Вам нужно найти, какое задание cron из ваших плагинов вызывает таймаут. Также попробуйте wp-cron control — это отличный инструмент, чтобы избежать редких ситуаций, когда wp-cron выполняется несколько раз одновременно, что (я не могу знать наверняка) может быть причиной вашей проблемы.

cybmeta cybmeta
8 мар. 2016 г. 09:55:08

@cybmeta Сначала я попробую мой вариант ответа — попытаюсь найти, какой именно плагин вызывает это. Мне нужно сохранить мой плагин. В любом случае, спасибо.

Jows Jows
8 мар. 2016 г. 10:06:12
Все ответы на вопрос 1
5

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

По умолчанию WordPress настроен так, что вызывает wp-cron.php каждый раз, когда кто-то посещает ваш сайт на WordPress и присутствует запланированная задача, чтобы проверить: "не пора ли что-то сделать?".

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

Отключение стандартного поведения wp-cron.php

Мы можем легко указать WordPress, чтобы он позволил нам управлять выполнением wp-cron.php через файл wp-config.php.

Откройте ваш файл wp-config.php с помощью редактора кода в cPanel File Manager. Перейдите к нижней части настроек базы данных в wp-config.php, обычно около строки 37.

Добавьте следующий код:

define('DISABLE_WP_CRON', 'true');

Настройка ручного cron-задания для wp-cron.php

Мы не хотим оставлять WordPress без возможности автоматизации задач, которые ему могут понадобиться. Но теперь, когда он не запускается для каждого посетителя, у нас гораздо больше контроля над тем, когда эти задачи выполняются.

Для большинства пользователей WordPress запуск скрипта wp-cron.php каждые 6 часов вполне достаточен. Это всего 4 выполнения в день по сравнению с возможными сотнями или даже тысячами, если у вас большой трафик на сайте.

  1. Войдите в cPanel.
  2. В разделе "Advanced" нажмите на "Cron Jobs".
  3. Выберите "Once an hour" из выпадающего списка "Common Settings".
  4. Теперь выберите "Every 6 hours" из выпадающего списка "Hour".
  5. Заполните команду для выполнения нашего cron-задания и нажмите "Add New Cron Job".

    • cd /home/userna5/public_html; php -q wp-cron.php
    • Где userna5 — это имя вашего пользователя в cPanel.

    • Учтите, что путь /home/userna5/public_html предназначен для основного домена. Если вы используете дополнительный домен или WordPress установлен в поддиректории, обязательно обновите путь.

  6. Вы должны увидеть сообщение об успешном добавлении нового cron-задания.

http://www.inmotionhosting.com/support/website/wordpress/disabling-the-wp-cronphp-in-wordpress

8 мар. 2016 г. 10:02:57
Комментарии

6 часов — это очень большой интервал, подходящий только для очень малоподвижных сайтов; это не может быть общей рекомендацией. Кроме того, wp-cron.php — это PHP-скрипт, который не предназначен для выполнения через php-cli. Вы должны запускать его с помощью команды wget; в противном случае могут возникнуть проблемы. Например, выполнение через php-cli устанавливает максимальное время выполнения в бесконечность, что оставляет дверь открытой для cron-заданий с ошибками или плохо написанным кодом, как у вас, которые могут выполняться вечно, пока ваш сервер не рухнет.

cybmeta cybmeta
8 мар. 2016 г. 10:30:58

@cybmeta Я не понимаю. Что мне делать, если вы говорите, что это не рекомендуется.

Jows Jows
8 мар. 2016 г. 10:46:20

6 часов могут быть хорошим вариантом для вас, я просто сказал, что это не может быть общей рекомендацией. У меня стоит 5 минут. Если 6 часов подходят вам — используйте их. Но я настоятельно рекомендую выполнять wp-cron.php через wget, а не через команду php-cli.

cybmeta cybmeta
8 мар. 2016 г. 11:52:28

Если проблема в записях задач в wp-cron (из-за таймаутов), простое добавление их в другом месте может не помочь. Нам нужно знать, что именно вызывает таймаут, чтобы надежно устранить проблему.

Sas3 Sas3
2 окт. 2017 г. 05:30:52

этот ответ совершенно неверен. wordpress cron действительно проблематичен на сайтах с низким трафиком, но на высоконагруженных сайтах он должен работать хорошо. Скорее всего, причина ошибок - плохой код в ваших плагинах или теме. Если у вас есть процесс, которому требуется больше времени для выполнения, гораздо лучше просто изменить его таймаут PHP в коде. Крон, запускаемый каждые 6 часов - это совершенно неразумно и рано или поздно что-то сломает.

Mark Kaplun Mark Kaplun
2 окт. 2017 г. 08:10:48