Тарифы        21.06.2020   

Что такое крон php. Простая настройка cron на linux

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

Как настроить cron средствами панели ISPmanager 5

Настраивайте cron-сценарии через панель управления в разделе Система → Планировщик

Чтобы добавить новые задания, нажмите «Создать» . Откроется интерактивный редактор cron-сценариев:


В поле «Команда» укажите полный путь до скрипта или команду, которая должна выполняться (для системных команд полный путь можно не указывать). Например, полный путь до файла script.pl, размещенного в корне площадки, будет выглядеть так:

/var/www/u12345/data/www/script.pl

Убедитесь, что файл, который нужно запустить, имеет права на чтение+исполнение (r+x) для владельца файла. Поменять права на нужные можно командой:

Chmod 750 script.pl

В поле «Описание» вы можете сделать пометку, чтобы не забыть что выполняет данный сценарий

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

Экспертный - гибкая настройка периодичности запуска: минуты, часы, дни месяцев, месяцы, дни недели (0 - воскресенье). Формат ввода: * - все минуты; */n - каждые n минут; n - с началом минуты n; a,b,c-e - с началом минут a,b,c,d,e

Примеры базового режима настройки периодичности запуска:



Примеры экспертного режима настройки периодичности запуска:

  • выполнять задание раз в час в 05 минут

  • выполнять задание по понедельникам в 1 час 15 минут ночи

  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год

Когда все поля будут заполнены (кроме поля «Описание» , оно необязательное), нажмите «ОК» .

Отправка отчетов на email о выполнении сценария

Для настройки уведомлений укажите email, на который будут приходить уведомления о выполнении сценария. Для этого перейдите в раздел «Планировщик»


Нажмите на кнопку «Настройки» и в поле «Адрес e-mail» укажите email, на который необходимо отправлять уведомления о выполнении сценариев.


В настройках сценария убедитесь, что не стоит галочка напротив поля «Не отправлять отчет по e-mail» .

Как настроить cron по ssh

Конфигурирование сценариев cron производится через unix shell. Определите, какие программы нужно запустить, и узнайте полные пути к ним на диске сервера. Для этого перейдите с помощью команды cd в каталог, где находится запускаемая программа, и узнайте полный путь к этому каталогу командой pwd. Путь может выглядеть так - /home/u12345/scripts/script.pl.

Убедитесь, что файл имеет права на чтение+исполнение (r+x) для пользователя, от которого вы запускаете скрипт. Поменять права на нужные можно командой chmod 750 script.pl

750 - полные права владельцу файла, группе – чтение и исполнение, остальным – доступ запрещен.

Выполните команду crontab -e – планировщик будет менять план пользователя, от имени которого вы запускаете cron. При первом запуске будет предложен выбор текстового редактора. Выберите редактор с которым вы уже знакомы. Как пример мы рассмотрим текстовый редактор vi. После ввода команды вы окажетесь в текстовом редакторе vi (п), где сможете вводить текст сценария для cron.

Краткая справка по редактору vi:

  • для вставки текста нажмите i, затем вводите текст
  • для удаления символов нажмите ESC, а затем наберите x
  • для выхода из vi без сохранения изменений нажмите ESC, а затем наберите:q!
  • для сохранения и выхода нажмите ESC, а затем наберите:wq

Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нажмите enter, иначе задания работать не будут.

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

поле1 поле2 поле3 поле4 поле5 команда

Значения первых пяти полей:

  • минуты - число от 0 до 59
  • часы - число от 0 до 23
  • день месяца - число от 1 до 31
  • номер месяца в году - число от 1 до 12
  • день недели - число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал - 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно.

Символ «*» означает «все возможные значения». Звездочка «*» в поле «часы» будет означать «запускать каждый час». Символ «/» служит для указания дополнительной периодичности задания. Например, «*/3» в поле «часы» означает каждые три часа. Если определены поля «день месяца» и «день недели» (не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца.

13 13 10 * 5 /home/u12345/script.pl

такая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.

Cron позволяет запускать сценарии при загрузке системы - укажите @reboot в начале сценария вместо периодичности запуска:

@reboot /home/u12345/script.pl

Так выглядит простейший сценарий cron:

0 */3 * * 2,5 /home/u12345/script.pl

Скрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу. Введите такой сценарий в редакторе vi, выйдите с сохранением результатов редактирования. Задание будет выполнятся с указанной периодичностью, если вы не допустили ошибок.

Cron сообщает об ошибках в сценарии:

/tmp/crontab.xxxxxxx: 1 строка, 9 символов crontab: installing new crontab "/tmp/crontab.xxxxxxx":1: bad minute crontab: errors in crontab file, can"t install Do you want to retry the same edit?

Посмотреть список уже установленных в cron сценариев можно командой crontab -l:

Bash-2.05b$ crontab -l 0 */3 * * 2,5 /home/u12345/script.pl

Если вам нужно запускать какую-то программу один раз в день, выбирайте ночное время. С с 2 до 8 часов ночи нагрузка на серверы минимальна. Если программа требует больших ресурсов, ночью она выполнится быстрее, чем днём.

Примеры использования cron

  • выполнять задание раз в час в 0 минут - 0 */1 * * * /home/u12345/script.pl
  • выполнять задание каждые три часа в 0 минут - 0 */3 * * * /home/u12345/script.pl
  • выполнять задание по понедельникам в 1 час 15 минут ночи - 15 1 * * 1 /home/u12345/script.pl
  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год - 1 0 5 4 * /home/u12345/script.pl
  • выполнять задание ежемесячно 1 числа в 6 часов 10 минут - 10 6 1 * * /home/u12345/script.pl

Как запустить PHP-скрипт по расписанию

Запускайте скрипты на языке PHP в указанное время с желаемой периодичностью с помощью PHP-CLI интерпретатора.Так может выглядеть команда на запуск скрипта script.php - /usr/bin/php -q $HOME/script.php> /dev/null 2>&1

Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget:

/usr/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123

Указывайте путь до утилит полностью, от корня файловой системы. Если в скрипте используются функции require, include, в которых указаны относительные пути - в начале выполняемого скрипта используйте вызов функции chdir(), которая задаст текущую рабочую директорию. Или воспользуйтесь встроенной командой cd.

@reboot cd /home/u12345 && ./script.pl

Как получить сообщения об ошибках от программ, запускаемых cron

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

MAILTO=адрес@домен.ru , где «адрес@домен.ru» - это адрес электронной почты, куда придут уведомления. Чтобы указать несколько адресов, введите их через запятую.

Вы будете получать письмо с тем, что выводят скрипты каждый раз, когда cron запускает задачу. Если вы напишете скрипт, который будет печатать строчку «Hello, world» и поставите его на выполнение через cron - вы будете получать письмо со строкой «Hello, world» каждый раз, когда cron запустит такой скрипт.

Если текст, выводимый скриптом, вам не нужен - добавьте в конец строки-сценария для cron символы > /dev/null 2>&1

Полностью строка для cron будет выглядеть так:

0 1 * * * /usr/bin/php -q $HOME/script.php > /dev/null 2>&1

Проверьте корректность синтаксиса скриптов, которые вы устанавливаете на выполнение через cron. Скрипты могут содержать ошибку и работать неодинаково при запуске через веб-сервер и через cron, и так далее. Перед запуском проверьте скрипт командой в unix shell:

/usr/bin/php -l script.php

Если ошибок в скрипте нет, вы увидите сообщение «No syntax errors detected in script.php».

Как запустить сценарий от имени пользователя

Для повышения безопасности системы скрипт запускают от имени определённого пользователя. Убедитесь, что у пользователя есть права на запуск скрипта. Укажите перед основной частью скрипта su -l имя_пользователя , от которого хотите запустить скрипт.

Например, для запуска сервера TeamSpeak3 от имени пользователя ts3server используется следующая команда:

Su -l ts3server ./ts3server_startscript.sh start

Скрипт расположен в домашнем каталоге пользователя, куда мы автоматически попадаем при авторизации.

Ограничения

Для программ, которые запускаются через cron, действуют такие же ограничения по потребляемым ресурсам, как для процессов, запускаемых пользователем в unix shell. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов и так далее.

cron – программа-демон, предназначенная для выполнения заданий в определенное время, или через определенные промежутки времени. Для редактирования заданий используется утилита crontab .

Листинг

Нельзя изменять файл расписания, просто открыв его в текстовом редакторе. Для его редактирования необходимо использовать команду crontab -e .

Простой пример файла расписания. Создание снимка экрана каждый час:

SHELL =/ bin/ bash MAILTO =username 0 * * * * scrot

Основные настройки

Выбор среды для исполняемых задач:

SHELL =/ bin/ bash

Имя пользователя, которому будет послано сообщение о выполнении задания:

MAILTO =username

Вместо имени, также можно использовать электронный адрес:

MAILTO =example@ example.org

Не обязательные настройки

Задаем каталог пользователя:

HOME =

Задаем каталоги исполняемых фалов:

PATH =/ sbin:/ bin:/ usr/ sbin:/ usr/ bin

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

DISPLAY =:0.0

Выбор времени выполнения задания

Время запуска представляется в таком виде:

Минута час день_месяца месяц день_недели команда

Символ "*" подразумевает - любое значение.

Минимальное время 1-а минута. Это связано с тем что cron каждую минуту просматривает список заданий, и ищет которые нужно выполнить.

Дополнительные переменные cron

Управление при помощи crontab

Добавление файла расписания:

Crontab имя_файла_расписания

Вывести содержимое текущего файла расписания:

Crontab -l

Удаление текущего файла расписания:

Crontab -r

Редактирование текущего файла расписания (при первом запуске будет выведен список поддерживаемых текстовых редакторов):

Crontab -e

Этот ключ позволяет выполнять вышеописанные действия для конкретного пользователя:

Crontab -u username

Учтите, что -u можно воспользоваться только запуская crontab от лица суперпользователя .

Примеры

Каждую минуту:

* * * * *

Каждый час, с использованием переменных cron:

@ hourly ~/ script.sh

Каждый день в 03:15 запускать скрипт:

15 3 * * * ~/ script.sh

Каждый понедельник:

0 0 * * 1

Каждый четный час:

* */ 2 * * *

Тоже что и выше, но расписанное полностью:

* 0 ,2 ,4 ,6 ,8 ,10 ,12 ,14 ,16 ,18 ,20 ,22 * * *

Каждые 10 минут:

*/ 10 * * * *

Новый год :

59 23 31 dec *

Каждый будний день в 22:00:

0 22 * * 1 -5

Запуск программы с графической оболочкой (GUI); каждую минуту будет отображаться сообщение с текстом «It work!»:

0 -59 * * * * DISPLAY =:0 gdialog --msgbox "It work\!" 25 20 > / dev/ null

* где DISPLAY=:0 - номер монитора

GUI версии

GTK+

Есть очень полезная программа: Scheduled tasks (gnome-schedule). Она представляет собой графический интерфейс для cron, и будет полезна новичкам, так как понятным языком описывает время выполнения задачи. К примеру:

15 * * * *

каждый час в 15 минут;

* 0 * * *

каждую минуту, между 00:00 и 00:59.

Введение

Размещая сайт, мы желаем добиться бесперебойной работы без нашего участия.

Значит, требуется автоматизировать процессы, и тут на помощь приходит cron.

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

Crontab в панели управления Timeweb

Если ваш аккаунт оплачен, и вас не уличили в спам-рассылке, то раздел Crontab доступен и работоспособен:

Интерфейс Crontab в панели управления Timeweb дружелюбен и интуитивно понятен: даже начинающие пользователи, до этого не имевшие опыта работы с cron, легко разберутся в том, как создавать задачи. Создав задачу, вы сможете в автоматическом режиме делать бэкапы, рассылки, чистить кэш и выполнять другие типовые действия.

Crontab в панели управления Timeweb поможет любому пользователю автоматизировать свои задачи и достичь нужный ему результат.

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

В разделе Crontab создаются новые задачи. Для этого потребуется заполнить поля:

  • Название . Это имя нашей задачи.
  • Тип файла и путь до файла . В зависимости от того, на каком языке написан сценарий, выбираем тип файла и путь до него. Если в задаче запускается скрипт, требующий переменные веб-сервера, запуск напрямую через php-интерпретатор приводит к ошибкам. Поэтому в случае, когда Вы используете скрипт, работающий при запуске через адресную строку браузера, необходимо выбирать тип файла "HTTP-запрос" и указывать URL для запроса аналогично тому, как он указывается в адресной строке "ваш_сайт/путь/до/скрипта/script.php?параметр1=значение1&параметр2=значение2".

При необходимости указывайте один ящик администратора в разделе Crontab. На этот ящик будут приходить сообщения в том случае, если бы при запуске скрипта в консоли появилось бы сообщение.

Нюансы

Небольшие нюансы, о которых стоит помнить при работе с cron.

1. Cron работает, если аккаунт оплачен и нет ограничений.

Проверить статус можно создав файл с расширением php (например twtest.php) с кодом:

И обратившись к файлу в браузере.

В браузере увидите информацию:

uid=12345(login) gid=600(customers) groups=600(customers) - говорит о том, что cron и почта доступны

uid=12345(login) gid=600(customers) groups=601(newcustomers),600(customers),660(spammers) - пишем в поддержку

2. Файл, который запускаете, должен иметь права на чтение и исполнение (r+x).

По умолчанию файлы на хостинге создаются с правами 600. Поменять права на нужные можно по ssh командой:

Chmod 744 twtest.php

или в Файловом менеджере, об этом у Timeweb есть инструкция:

3. Дабы не захламлять e-mail лишними письмами, настройте часто исполняемые скрипты на запись лога в файл , а не в консоль.

CRON по SSH

Настройка планировщика по ssh описана столько раз, что нового рассказать не получится.

Подключение по ssh подробно описано в справочном центре Timeweb:

После прочтения надо найти файл со скриптом, перемещаясь между директориями командой cd. Найдя файл введите pwd и скопируйте путь (пример "/home/c/cc123456/public_html/test/")

Если не знаете какие права у файла введите:

Chmod 744 имя_файла

При подключении по ssh редактировать задачи можно командой

Crontab -e

В первый раз сервер попросит выбрать редактор:

Select an editor. To change later, run "select-editor". 1. /bin/ed 2. /bin/nano <---- easiest 3. /usr/bin/mcedit 4. /usr/bin/vim.basic 5. /usr/bin/vim.tiny Choose 1-5 :

Система указывает на простой редактор nano под цифрой 2. Если не рассчитали силы или случайно выбрали vi, не пугайтесь, нажмите Esc, затем введите двоеточие q и нажмите enter.

Для того, чтобы сменить редактор, введите команду:

Select-editor

и выберете nano.

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

1 2 3 4 5 /opt/php56/bin/php /home/с/сс123456/public_html/twtest.php

Значения первых пяти значений:

  • 1 минуты — число от 0 до 59
  • 2 часы — число от 0 до 23
  • 3 день месяца — число от 1 до 31
  • 4 номер месяца в году — число от 1 до 12
  • 5 день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Для каждого параметра возможно задать необходимое количество значений через запятую. Например, если в поле «часы» написать 8,23, то задание будет запущено в 8 часов утра и в 23 часа вечера. Можно задать интервал: 9-18 будет означать, что программа запустится каждый час в период с 9 до 18 часов включительно. Символ "*" означает «все возможные значения». Например, указание "*" в поле «часы» будет означать «запускать каждый час». Символ "/" служит для указания дополнительной периодичности задания. Например, "*/3" в поле «минуты» означает «каждые три минуты».

"/opt/php*/bin/php" где php*/ = php53/ php5.3/ php54/ php5.4/ php56/ php5.6/ php70/ php7.0/ php71/ php7.1/

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

Нюансы

  1. При изменении в панели управления в разделе "Crontab" удалятся изменения записей сделанных по ssh!
  2. Если определены оба поля "день месяца" и "день недели" , то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца. Например, следующая команда будет выполняться в 9 часов 19 минут каждую среду и каждое 7 число месяца, даже если 7 число не совпадает со средой.

19 9 7 * 3 /opt/php56/bin/phpn /home/с/сс123456/public_html/twtest.php

Частные случаи

Для запуска задачи чаще, чем раз в минуту, используем sleep.

Для этого пишем в crontab:

* * * * * /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php; /bin/sleep 30; /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php

для запуска файла каждые 30 секунд.

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

Логичным вариантом будет создание lock файла и при запуске скрипта проверять наличие файла. Но на хостинге Timeweb, как и на других хостингах, присутствует ограничение по процессору. Скрипт зависит от условий и времени выполнения, а значит, мы не можем предугадать время выполнения скрипта. Если скрипт выполнится с нарушением правил и ограничений ( ), то процесс завершится со стороны хостинга. Тогда lock файл не будет удален, а значит, и скрипт не будет запускаться по крону, пока файл не будет удалён.

Маэстро из отдела инженеров рассказал, как решить задачу.

Для начала создаём sh скрипт в файл /home/c/cc123456/tmp/twtest.sh:

#!/bin/bash command=$@ no_spaces=`echo $command | sed -e "s/\s/_/g" -e "s|/|_|g"` pidfile=/var/tmp/$no_spaces.pid lockfile=/var/tmp/$no_spaces.lock if [[ -e $pidfile ]] then pid=`cat $pidfile 2>/dev/null` ps h $pid >/dev/null 2>/dev/null if [[ $? -eq 0 ]] then exit 1 else rm $lockfile fi fi echo $$ > $pidfile /usr/bin/flock -w 0 $lockfile $command rm $pidfile

В панели управления в разделе crontab выбираем тип "Исполняемый бинарный файл".

В поле “Полный путь” пишем:

/home/c/cc123456/tmp/twtest.sh /opt/php56/bin/php /home/c/cc123456/tmp/twtest.php

Где

  • /home/c/cc123456/tmp/twtest.sh - наш скрипт проверки
  • /opt/php56/bin/php - путь до нужного интерпретатора
  • /home/c/cc123456/tmp/twtest.php - путь до нашего скрипта

Указываем необходимое время запуска и придумываем название.

Заключение

Теперь вы знаете, как работать с cron и автоматически запускать задачи. Более подробную информацию о cron ищите в "man cron". Удачи!

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-задания?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 */2 * * * /yourdirectory/myscript.pl

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

@reboot /yourdirectory/myscript.pl

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

20 3 * * 3 /yourdirectory/myscript.pl
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).

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

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

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

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

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

(Задания по расписанию) служит для настройки выполнения команд по расписанию или в строго назначенное время. С помощью CronTab Вы можете задать определенное время, и точно в это время выполнится указанная Вами команда. Сконфигурировать CronTab можно таким образом, что задача будет выполняться раз в месяц , день , час и ежеминутно или, например, каждые 10 минут . Также можно комбинировать, к примеру, Вам необходимо первые 2 часа выполнять задание раз в час, затем следующие 2 часа не выполнять.

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

Мастер заданий

Первое знакомство с Cron для нас начинается с открытия Мастера заданий . С помощью мастера можно без каких-либо серьезных знаний администрирования настроить время выполнения скриптов, просто выбирая из выпадающих списков определенную комбинацию. Также необходимо ввести путь к скрипту или команду, которая будет выполняться в Cron .

Давайте посмотрим пример запуска скрипта, написанного на языке PERL , который необходимо запускать каждые 5 минут .

После нажатия на кнопку , под основным окном Cron появится новая запись с Вашей первой конфигурацией. Количество таких записей не ограничено.

Теперь у нас есть первое задание, которое мы можем включить /выключить , изменить или удалить с помощью кнопок, расположенных справа, напротив каждого из заданий:

Включить/выключить задание;
- изменить задание;
- удалить задание.

Ручная настройка CronTab.

Также в разделе есть ручная настройка, позволяющая настраивать время запуска скрипта в привычном виде, для тех, кто знаком с Cron .

Время, интервал

Минуты могут быть от 0 до 59
Часы могут быть от 0 до 23
День месяца может быть от 1 до 31
Месяц может быть 1 до 12
День недели может быть от 0 до 7 , где 0 и 7 - воскресенье

Можно конфигурировать CronTab для выполнения задач не только в определенное
время, но и ежеминутно , ежечасно , ежедневно , еженедельно или ежемесячно ,
используя комбинацию */x

Примеры

*/5 * * * * - запускать команду каждые пять минут
0 */3 * * * - запускать каждые три часа
0 12-16 * * * - запускать команду каждый час с 12 до 16 (в 12, 13, 14, 15 и 16)
0 12,16,18 * * * - запускать команду каждый час в 12, 16 и 18 часов

*/1 * * * * /usr/bin/php ~/site.ru/public_html/test.php - запуск каждую минуту php-скрипта test.php
0 */1 * * * /usr/bin/perl ~/site.ru/public_html/test.pl - запуск каждый час perl-скрипта test.pl

Команда

Необходимо задать путь до скрипта от домашнего каталога
Например: public_html/cgi-bin/script.pl
Cистема сама подставит символ ~/ (эта комбинация заменяет полный путь)
Получится: ~/public_html/cgi-bin/script.pl
Если в конце пути поставить символ & (амперсанд), то скрипт будет работать в фоновом режиме.
Установка этого символа необязательна.