Настройка планировщика (Cron)

Варианты команд для планировщика

Конфигураций серверов множество и универсальной команды не существует. Некоторые серверы и хостинги используют разные версии PHP, что делаем составление крон задачи еще более сложным. Есть несколько команд, которые не завязаны на системное окружение и работают практически всегда:

 wget -O /dev/null -q http://ваш-домен.ru/cron.php
 curl -s http://ваш-домен.ru/cron.php > /dev/null

Следующие команды с использованием консольного PHP, следовательно путь должен быть указан согласно системного расположению файла cron.php:

 php -f /полный_путь_до_tds/cron.php
 php-cli /полный_путь_до_tds/cron.php > /dev/null

Примечание: Желательно запускать команды в консоли сервера, чтобы убедиться в их работоспособности

По каким причинам может не работать крон?

1. Путь до файла cron.php неправильный.

Проверить можно, запустив команду из консоли сервера (SSH). Включите в настройках крона уведомление на Email, чтобы получать результат запуска.

2. Ошибка при запуске cron.php

Посмотрите логи ошибок var/log/errors.log и keitaro_errors.log. Включите в настройках крона уведомление на Email, чтобы получать результат запуска.

3. У консольной версии PHP не подключен ioncube.

Проверить можно, запустив команду крона из консоли сервера.

4. Используется curl (wget), который не установлены на сервере.

Попробуйте оба варианта: с wget и с curl. Обратите внимание, что при использовании curl и wget в команде должен быть прописан URL файла, а не его системный путь.

5. Запускается PHP старой версии.

Частый случай на хостингах с поддержкой нескольких версий PHP. Посмотрите у хостера в документации по крону, как выполнять PHP-скрипты.

Если не удалось выявить причину. Обратитесь, пожалуйста, сначала в саппорт хостера. Им лучше известно, как настраиваются кроны на их серверах.

Как узнать путь до скрипта cron.php?

Путь до директории домена можно узнать в phpinfo, создав php-скрипт с кодом:

 <?php phpinfo(); ?>

cPanel

  1. Зайдите на страницу «Cron Jobs»;
  2. Добавьте новую задачу в разделе «Add New Cron Job»:

cpanel.jpg

ISPManager 4

Зайдите на страницу «Система > Планировщик». Нажмите на кнопку «Создать».

ISPManager 5

Зайдите в аккаунт вашего пользователя. Если добавите крон задачу под root, то у вас могут быть позже ошибки с правами доступа. Зайдите в раздел «Пользователи», выберите пользователя и сверху нажмите «Войти». isp_login.jpg

Зайдите на страницу «Система > Планировщик», нажмите сверху «Создать». Включите экспертный режим. Введите команду, что получили во время установки, во всех остальных полях поставьте * (звездочку).

Direct Admin

  • Minute: *
  • Hour: *
  • Day of Month: *
  • Month: *
  • Day of Week: *

Command: wget -O - -q -t 1 http://domain.com/cron.php

Vesta

  • Минута: *
  • Час: *
  • День: *
  • Месяц: *
  • День недели: *
  • Команда php -f /home/ЛОГИН/web/ДОМЕН/public_html/cron.php

Crontab (Ubuntu, CentOS, Debian)

Выполните:

$ crontab -e

Откроется редактор VIM. Нажмите «i», затем вставьте:

* * * * * php /полный_путь_до_tds/cron.php

Нажмите ESC и наберите команду :wq, Enter. Должно выйти сообщение, что крон обновлен.

Jino.ru

Задание:

php5.6 ~/cron.php
  • Минуты: * (если не дает, то 0, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55)
  • Часы: *
  • Дни: *
  • Месяцы: *
  • Дни недели: *

Подробнее в документации хостера https://www.jino.ru/help/faq/cron/cron-add/#cron-add

Timeweb.ru

1. Зайдите в раздел «Crontab».

2. Добавьте задачу:

  • Тип файла Исполняемый бинерный файл;
  • Периодичность Каждая минута;
  • Нажмите на кнопку выбора файла, выберите cron.php.
  • Затем добавьте перед строкой /opt/php5.6/bin/php (обратите внимание на пробел между двумя частями команды).

В случае, если включили PHP 7.0 у сайта, используйте /opt/php7.0/bin/php.

timeweb.jpg

Если не работает:

  1. Проверьте на странице «Настройки > Производительность», что хранилище для обработчика выбрано «Файлы» или «MySQL», но НЕ «Redis».
  2. На странице Crontab (в панели timeweb) включите уведомления на email (Кнопка «Указать ящик»). Так вы сможете плучать уведомления о работе крона.

Sprinthost.ru

1. Зайдите на странице «Дополнительно > Планировщик»;

2. Найдите форму добавления задания.

3. Пропишите команду, заменив LOGIN и DOMAIN на свои:

/usr/local/bin/php /home/LOGIN/domains/DOMAIN/public_html/cron.php

Sweb.ru

1. Зайдите на страницу «CRONTAB»

2. Добавьте задачу. В интервалах пропишите * (звездочки).

3. Пропишите команду:

php5.6 /путь_до_директории_tds/cron.php

Версию php ставьте согласно той, что стоят в настройках сайта.

Beget.ru

  1. Выберите «Произвольная команда».
  2. Укажите команду /usr/local/php-cgi/7.0/bin/php ~/site.ru/public_html/cron.php (Используйте ту же верси PHP, что выбрана для сайта).
  3. Нажмите «Каждую минуту».

Reg.ru ISP Manager

Зайдите на страницу «Версии PHP». Посмотрите какая версия PHP выбрана.

Пропишите путь до php согласно выбранной версии. Например для PHP 7.0 путь /opt/php/7.0/bin/php (обратите внимание, что путь без «-cgi»).

Reg.ru Хостинг

  1. Зайдите в Панель управления хостингом - Вкладка «Веб Сервер» - «Планировщик заданий».
  2. Напишите название задание и нажмите создать.
  3. Проставьте галочками все дни, часы, минуты.
  4. В пункет “выполняемая программа” используйте команду:
cd $HOME/папка_сайта/docs/папка_скрипта/ && php $HOME/папка_сайта/docs/папка_скрипта/имя_скрипта.php

где:

  • cd $HOME/папка_сайта/docs/папка_скрипта/ — переход в каталог, в котором размещен скрипт;
  • $HOME/папка_сайта/docs/папка_скрипта/имя_скрипта.php — полный путь к скрипту.

крон_финал2.jpg

Полный путь до Cron.php вы можете посмотреть на вкладке «Веб-сервер» - «Файловый менеджер»

FastVPS ISP Manager

Команда для PHP 7.1 /opt/php71/bin/php /путь_до_файла/cron.php

Команда для PHP 7.0 /opt/php70/bin/php /путь_до_файла/cron.php

Just-hosting.ru ISP Manager

Посмотрите текущую версию PHP у своего сайта:

Пропишите команду для крона, согласно используемой версии:

  • Команда для PHP 5.6 ~/php-bin-isp-php56/php /путь_до/cron.php.
  • Команда для PHP 7.0 ~/php-bin-isp-php70/php /путь_до/cron.php.