Крон на хостинге разберем детали


Запуск задач по расписанию linux. Cron и его маленький секрет



Подскажите, как поставить крон-задачу?

Добрый день всем! Подскажите, как поставить крон-задачу. У меня пункт в установке: 4. Поставить крон задачу на /cron/siteinfo_upd.php (каждый час), /cron/cron_upd.php (каждые 10 мин), /cron/check_konkurs.php (каждые 30 мин), /cron/cleaner.php (каждые 5 мин)

Юзеры ( 2 ) оценили на 4.5 из 5

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

Также мы собрали тарифы от тысяч хостеров, чтобы вы могли выбрать хостинг по конкретной цене.

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

Виртуальный хостинг - подходит для большинства проектов начального уровня с посещаемостью до 1000 человек в сутки. В таком хостинге мощность сервера делится между несколькими хостинговыми аккаунтами. Услуга проста в настройке даже для новичков.

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

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

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

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

Тестовый период - предоставляется хостером бесплатно на 7-30 дней, чтобы вы могли удостовериться в его качестве.

Moneyback - период на протяжении которого хостер обязуется вернуть деньги, если вам не понравится хостинг.

Означает какая операционная система установлена на сервере хостинга. Мы рекомендуем размещать на серверах с Linux, если нет особых требований у разработчиков сайта.

Абузоустойчивый хостинг - компании, которые разрешают размещать практически любой контент, даже запрещенный (спам, варез, дорвеи, порнографические материалы). Такие компании не удаляют контент вашего веб-сайта при первой же жалобе (“абузе”).

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

Безопасный хостинг - тот, где администрация постоянно обновляет ПО установленное на серверах, устанавливает базовую защиту от DDoS-атак, антивирус и файерволлы, блокирует взломанные сайты и помогает их лечить.

Защита от DDOS - компании, которые предоставляют хостинг с защитой от DDoS-атак. Такие пакеты ощутимо дороже обычных, но они стоят своих денег, так как ваш сайт будет защищен от всех видов сетевых атак.

На языке программирования PHP и базах данных MySQL сейчас работает большинство сайтов. Они же поддерживаются практически всеми современными хостингами.

ASP.NET - платформа для разработки веб-приложений от Майкрософт.

От панели управления зависит ваше удобство в настройке хостинге/сайта.

Большинство качественных хостингов из нашего ТОПа используют удобные панели управления, поэтому рекомендуем больше внимания уделить другим параметрам при выборе.

Крон на хостинге,

Cron - это планировщик заданий, который работает на Unix/Linux хостинге. Он позволяет автоматически выполнять определенные действия на сервере (запуск программ, скриптов и т.д.), с заданным временем или периодичностью.

Правильная настройка планировщика заданий Cron

Задания для Cron можно описать так - это несколько строк (одна строка - одно задание), в которых указывается периодичность запуска и команда (которая означает, что собственно нужно запустить):

30 3 * * 2 /yourdirectory/myscript.pl

Минуты Часы ДеньМесяца Месяц ДеньНедели Команда

Минуты - задается числом от 0 до 59

Часы - задается числом от 0 до 23

ДеньМесяца - задается числом от 1 до 31

Месяц - задается числом от 1 до 12

ДеньНедели - 1 - Понедельник, 2 - Вторник, 3 - Среда, 4 - Четверг, 5 - пятница, 6 - Суббота, 7 - Воскресенье

Таким образом в нашем примере (30 3 * * 2 /yourdirectory/myscript.pl) задние означает, что нужно каждый вторник, в 3 часа 30 минут ночи запускать файл /yourdirectory/myscript.pl

Также в каждом из полей мы можем использовать:

Написание через запятую: 2,5,16 - если написать такое в поле Часы, то задание будет запускаться в 2 часа ночи, в 5 часов утра и в 16 часов.

Интервал: 5-9 - если написать в это в поле Минуты, то задание будет запускаться каждую минуту в период с 5 по 9 мин.

Дополнительная периодичность: /4 - если написать такое в поле часы, то это будет означать что запуск будет происходить каждые 4 часа.

Важно! Звездочка (*) - означает все возможные значения! Таким образом, неопытный вебмастер который решит, что для запуска задания 1 числа каждого месяца достаточно написать * * 1 * * /yourdirectory/myscript.pl натыкается на то, что задание будет запускаться каждую минуту, в каждом часу.

Ниже, мы покажем более детальные примеры Cron-заданий и вам все станет более понятно.

Важно! /yourdirectory/myscript.pl - это должен быть абсолютный путь к файлу, а сам файл должен иметь определенные права доступа (минимум - право на выполнение и чтение для владельца файла 644).

Как и куда вводить Cron-задания?

Первый способ работы с Cron - это панель управления хостингом. Но в разных панелях настройка и управление осуществляются по разному:

cPanel: Панель управления -> Задания Cron

ISP Manager: Панель управления -> Планировщик (Cron)

Parallels Plesk: Панель управления -> Запланированные задачи

Если у вашего хостинг-провайдера нет возможности работать с заданиями через панель управления, то вся работа с Cron обычно производится через SSH-протокол. Здесь все просто - подключаетесь к серверу по SSH и вводите команды. Для подключения к серверу используют бесплатную программу PuTTY (как настроить), а команды вводят в командной строке.

Чтобы начать работу вводим команду

После этого вас скорее всего перебросит в текстовый редактор vi (у разных провайдеров могут быть разные редакторы). vi - это достаточно сложный редактор, поэтому рекомендуем вам попробовать ввести строчку

Если запустится более легкий редактор, то все отлично, если же ваш хостинг-провайдер его не поддерживает, то Google поможет разобраться с vi. Мы лишь кратко обозначим основные моменты:

Ввод текста - жмем клавишу i и редактор перейдет в режим ввода текста,

выйти из режима ввода текста - Esc

Удалить символ - x (если вы находитесь в режиме ввода теста, то чтобы удалить символ сначала нажмите Esc, а потом x),

Сохранить и выйти - :wq (если вы находитесь в режиме ввода теста, то чтобы удалить символ сначала нажмите Esc, а потом :wq).

Важно! Вводя задания для Cron после каждой строчки нужно обязательно нажимать Enter, даже если эта строчка единственная.

Чтобы посмотреть уже существующие задания для Cron вводим crontab -l

Задания для Cron с полезными примерами

Правила составления Cron-заданий смотрим вверху статьи. Запускать задание каждые 2 часа в 0 минут (каждый день, каждого месяца)

Запускать задание каждый раз после перезагрузки сервера

Запускать задание по средам в 3 часа 20 минут ночи (каждый день, каждого месяца)

20 3 * * 3 /yourdirectory/myscript.pl

Запускать задание 14 марта в 2 часа 10 минут ночи

1 0 14 3 * /yourdirectory/myscript.pl

Запускать задание ежемесячно 1 числа в 3 часа 15 минут ночи (в каждом месяце)

15 3 1 * * /yourdirectory/myscript.pl

Запуск PHP-файлов по расписанию с помощью Cron

Для запуска PHP-скриптов через Cron можно использовать специальный интерпретатор. К сожалению мы не можем дать вам инструкцию по его работе, т.к. у разных провайдеров может использовать разный софт. Поэтому многие вебмастера запускают PHP-файлы с помощью WGET, для этого используем такую запись в crontab:

30 3 * * 2 root wget -O - -q -t 1 http://mysite.com/file.php

-O - означает, что Cron не будет создавать лишние файлы, а будет работать через консоль. Это позволяет избежать захламления сервера.

-q отключает вывод операции на экран

-t 1 разрешается только одна попытка соединения.

http://mysite.com/file.php - путь к вашему PHP-фалу (не обязательно указывать абсолютный путь).

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

30 3 * * 2 root wget -O - -q -t 1 http://mysite.com/file.php

Также, существует еще один способ запуска:

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php

Но в этом случае вам нужно знать путь к папке wget на своем сервере (чаще всего /usr/bin/wget или /usr/local/bin/wget).

Если вы до сих пор не поняли, что означают 30 3 * * 2, то вверху статьи мы это описали.

Какие есть ограничения для работы Cron?

Единственное ограничение, которое может относится именно к Cronну - это ограничение на периодичность запуска. Например чтобы не перегружать сервер, провайдер может разрешать запуск Cron-заданий не чаще, чем один раз в час или полчаса. В остальном на эти задания действуют все те же ограничение, что и на сервер в целом (память ОЗУ, размер файла, время его выполнения и т.д.). Все эти ограничения задаются хостинг-провайдером и узнать их можно только у него.

Что будет с Cron при перезапуске сервера?

Он перезагрузится вместе с сервером. ваши задания не пропадут, они будут работать как и ранее.

Получение отчета о работе Cron на почту

Cron можно настроить так, чтобы на электронную почту приходили сообщения с результатами запущенных заданий. Эта функция также может быть полезна, для уведомления на случай ошибки. Для получения отчета на e-mail нужно редактируя crontab (перед заданиями) написать такую строку:

где info@mydomain.com - это e-mail на который будут приходить письма. Также можно добавить несколько адресов, через запятую.

Есть еще один момент, вам на почту будет приходить еще и результат работы скрипта. например, если скрипт пишет на экране какую-то надпись, то эта же надпись придет на вашу почту вместе с отчетом. Если это вас раздражает, то добавьте в конце задания строку > /dev/null 2>&1

Настройка CRON на хостинге для автоматического обновления лент Wpgrabber

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

  1. Прежде всего переключаем в админке сайта в настройках плагина на обновление лент Wpgrabber с хостинга:
  2. Переходим на ваш хостинг в панель управления. Там раздел на CRON может везде называться по разному. Это может быть — Планировщик CRON, Управление CRON, Запланированные задачи, CRON-задания и тд. Если не видите ничего подобного — обратитесь в техподдержку хостинга с данным вопросом и вам сразу помогут. Итак, нашли нужное — нажимаем и попадаем в инструмент для настройки Cron задания для обновления лент Wpgrabber. Пример данного инструмента в Cpanel хостинга:
  3. А вот тут столкнемся с определенной трудностью Дело в том, что практически на всех хостингах данные команды для запуска автообновления отличаются. Вернее, команда одна. Нам нужно, чтоб в определенное время, которое мы задали, наш хостинг запустил сам ссылку вида http://наш_сайт/?wpgrun=1 (наш_сайт естественно, замените на свой домен и если у вас протокол https://, то тоже сделайте правку.) Вообще точная ссылка конкретно ваша находится в настройках плагина во вкладке — Автообновление (там, где мы переставляли на обновление с хостинга). И вы можете скопировать ее там. И так, ссылку взяли, определились с временем ( к примеру, нам нужно, чтоб обновлялись ленты раз в час), делаем, собственно, настройку
  4. Вот тут и трудность. Команда для запуска ссылок на хостингах разная! Я буду вам показывать на примере хостинга Fozzy и потом дам еще несколько команд популярных хостингов. Также обычно на странице инструмента Cron есть описание на хостингах примеров команд и их настроек. Но если у вас нет подобного и возникли сложности — пишем техподдержке и задаем конкретно вопрос — «Какую команду нужно мне прописать в кроне хостинга, чтоб она запускала каждый час ссылку вида http://наш_сайт/?wpgrun=1″
  5. На fozzy запуск ссылки задается командой вида: curl -sL http://наш_сайт/?wpgrun=1 . Ее вписываем в поле — Команда. Так, как нам нужно, чтоб обновления были раз в час ежесуточно, то на вкладках: час, день, месяц, день недели ставим звездочку, которая означает — каждый час, каждый день и тд: * А вот в поле — минуты ставим ту цифру, во сколько нам нужно, чтоб ленты обновлялись каждый час. К примеру, чтоб плагин Wpgrabber парсил через 30 минут после начала каждого часа- то и ставим цифру 30:
  6. Далее нажимаем «Добавить запланированное задание» и через несколько секунд обработки получаем само задание:
  7. Переходим на сайт и ждем то время, которое вы указали в настройках крон-задания. Если все правильно сделали — в это время ленты автоматически включатся и спарсят вам новости и так каждый час будет продолжаться.

Как и писал ранее, запуск ссылки на кроне разных хостингов по команде может быть разный. Привожу некоторые популярные:

Это одна из самых распространенных и универсальных команд, пробуйте ее в первую очередь:

/usr/bin/wget http://сайт.ru/?wpgrun=1

mchost.ru

/usr/bin/wget -O /dev/null -q «http://сайт.ru/?wpgrun=1»

firstvds.ru

GET «http://сайт/?wpgrun=1» >/dev/null 2>&1

beget.com/ru

wget -O /dev/null -q ‘http://сайт.ру/?wpgrun=1’

ihc.ru

/usr/bin/wget -O /dev/null -q «http://сайт.ru/?wpgrun=1

reg.ru

sprinthost.ru

fozzy.com

curl -sL http://сайт.ru/?wpgrun=1

Если ничего не подходит и нет подсказки в описании инструмента — обращаемся в техподдержку хостинга за правильной командой.

Рассмотрим вариации запуска разных лент Wpgrabber в разное время с помощью cron-задания на хостинге.

1.Нам нужно, чтоб обновлялась одна конкретная лента в одно и то же время. Значит ставим на крон обновления следующий адрес:

http://сайт.ru/?wpgrun=1&feeds=14

Все то же самое, только вы добавляете id нужной ленты. В нашем случае это id 14. Его нужно брать в «Списке лент» в колонке «ID»:

2.Нам нужно, чтоб обновлялось несколько конкретных лент. Тогда id пишем через запятую, пример:

http://сайт.ru/?wpgrun=1&feeds=5,8,13

тогда включатся ленты, имеющие id 5, 8 и 13.

3. Нам нужно, чтоб обновлялся диапазон лент, к примеру с первой по пятую. Тогда пишем так ссылку:

http://сайт.ru/?wpgrun=1&feeds=1-5

Обновятся все ленты с id 1 до 5.

Ну и напоминаю, настройка одного крон-задания для автообновления лент вы всегда можете заказать на данном сервисе. Стоимость — 1 задание 100 руб.

Всего наилучшего и надеюсь, кому-то данная статья поможет!

Отзывы

Авдей
Лев
Марина
Марианна
voedanaltio

Написать отзыв

Success! Your message has been sent.