Задания Cron на выполнение php-скриптов

Задания Cron

Cron - это демон (программа, которая постоянно работает в системе в фоновом режиме), представляющий собой планировщик задач в UNIX-подобных операционных системах (включая сервер Apache), который в определенное время автоматически выполняет задания. Пример задания - копирование базы данных MySQL в определенное место на сайте (создание резервной копии).

Каждый пользователь системы может добавлять свои задания, указывая, в какое время и какие скрипты нужно выполнять от его имени. Задания могут выполняться, например, раз в день, раз в месяц, раз в год.. На вашем хостинге могут действовать ограничения на общее количество заданий и на то, как часто может выполняться задание (Например, не чаще 1 раза в 10 минут и не более 10 cron-заданий).

Задание (таблица crontab) включает 6 разделов, разделяемых пробелами или табуляцией.

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

Первые пять разделов задают время выполнения скрипта:
минуты: 0-59
часы: 0-23
день месяца: 1-31
месяц: 1-12
день недели: 0-7 (0 и 7 - воскресенье)
* - диапазон с первого до последнего.

команда задает скрипт, который нужно выполнять, например, скрипт на Perl или на php. Если команда передает текст в стандартный вывод, этот текст отправляется на e-mail пользователя, но стандартный вывод можно перенаправить в /dev/null:

команда >/dev/null 2>&1

Примеры задания времени выполнения скрипта:
0 22 * * * - каждый день в 22:00
0 0 1 * * - раз в месяц
0,30 10-22 * * * - каждые полчаса между 10:00 и 22:00
0/10 * * * * - каждые 10 минут

Права доступа

На скрипт рекомендуется выставить права доступа 755 (права на исполнение).

Добавление задания Cron в cPanel

В cPanel добавить задание довольно просто. Войдите в "Дополнительно", "Задания Cron" и заполните форму добавления задания. Но имейте в виду, что выполнение php-скрипта имеет свои особенности.

Выполнение php-скрипта в задании Cron

В выполняемом php-скрипте не должны использоваться переменные окружения. Например, адреса следует прописывать явно. Дело в том, что при выполнении cron-задания в php-скрипте недоступны серверные переменные (например, $_SERVER, $_GET), т.к. веб-сервер Apache не участвует в работе демона cron и не заполняет переменные окружения.

В команде необходимо указать путь к php (может отличаться для разных хостингов), например, /usr/bin/php, затем пробел и полный путь к файлу скрипта:

/usr/bin/php /home/логин/public_html/myscript.php

Пример Cron-задания для выполнения php-скрипта один раз в день (0 0 * * * - задает периодичность)

0 0 * * * /usr/bin/php /home/логин/public_html/myscript.php
Запись опубликована в рубрике Apache с метками , , , . Добавьте в закладки постоянную ссылку.

3 комментария: Задания Cron на выполнение php-скриптов

  1. Alexsander говорит:

    А как подавить отсылку на емайл сообщений крона?

  2. MBlogM говорит:

    команда >/dev/null 2>&1

  3. HotIce говорит:

    Доброго времени.
    У вас отличный блог, странно, почему я на него раньше не попадал.
    Столкнулся, не в первый раз уже, с работой cron в вордпресс.
    В свое время, вырубил его функционал в wp-config, потому что при обращении к wp-cron.php с хостинга возвращает 404.
    Покурив интернет, выяснил, что это происходит когда в hosts на хостинге прописано 127.0.0.1 localhost, а wordpress-у нужно, в данном случае, чтоб был прописан адрес моего блога. Хостинг виртуальный, провайдер что-либо делать отказался. Ну я отключил. А сейчас решил поставить wp super cache, но сия зверюга натыкаясь на 404 ставиться не хочет.
    Не подскажете, где бы его чего почитать более-менее толковое про этот чертов функционал? Второй раз за месяц по интернету прохожусь с этими вопросами, но такое ощущение, что это или заговор, или я не там ищу.
    Хочу отпинать или вордпресс, чтоб дергался крон сервера хостинга, либо научить кэширующий плагин работать с внешним кроном.
    Благодарю.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

* Copy this password:

* Type or paste password here:

3,247 Spam Comments Blocked so far by Spam Free Wordpress