ГЛАВНАЯ | Регистрация | ВХОД  

 
Здарова, Гость | RSS  
 
eluka vkontakte www.twitter.com www.facebook.com
НАВИГАЦИЯ
Разделы Новостей
[06.04.2010][Юмор]
Голая Raven Riley (0)
ЧАТ-ОКНО
ПОПУЛЯРНОЕ

Сайты продаются.

Спеши купить свой сайт.

Цены уточнять через ICQ 31048198пять

  • Сайт продаётся eluka 45.000р
  • НОВОЕ
    РЕКЛАМА
    Загрузка...
    РЕКЛАМА
    Скоро здесь будет реклама.
    РЕКЛАМА
    РЕКЛАМА
    Главная » 2009 » Декабрь » 30 » Работа с Cron-заданиями
    Работа с Cron-заданиями
    01:00

    РАБОТА С CRON-ЗАДАНИЯМИ

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

    В состав операционной системы UNIX обязательно входит демон cron, который позволяет выполнять скрипты в строго назначенное время. Для этого в пул необходимо поместить cron-здание, которое задаёт периодичность запуска скрипта. Первоначально демон cron предназначался для выполнения системных задач — резервного копирования, очистки временных директории и т.п. По мере того, как Web-сайты становились всё сложнее и сложнее, потребность в регулярном запуске скриптов появилась и у Web-разрботчиков.

    Замечание

    Демоном в UNIX-подобных операционных системах называют резидентную программу, которая постоянно работает в фоновом режиме. Такая программа загружается со стартом операционной системы и прекращает свою работу при её остановке.

    Cron имеет достаточно гибкий формат: вы можете задать периодическое выполнение скрипта с периодом от нескольких минут, до дней и лет. Можно назначить выполнения скрипта каждый день в 12:20 или каждый четверг, или каждые 20 минут.

    На нашем хостинге на выполнение cron-заданий накладываются следующие ограничения:

    • Скрипты не должны выполняться чаще 1 раза в 10 минут.
    • Нельзя назначить более 10 cron-заданий.

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

    Описание интерфейса работы с cron-заданиями

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

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


    В поле "Строка команды" следует ввести абсолютный путь к скрипту от корня раздела. Узнать путь к файлу можно, обратившись к элементу суперглобального массива $_SERVER[`SCRIPT_FILENAME`]:

      echo $_SERVER[`SCRIPT_FILENAME`]; 
    ?>

    Для того, чтобы запустить скрипт, необходимо выставить ему права доступа на исполнение. Права доступа в UNIX задаются для трех категорий пользователей: владельца, группы и остальных пользователей и обозначаются восьмиричным числом XXX (по позиции на каждую из категорий). Ниже приведена расшифровка прав, используемых в unix-системах.

    • Цифра 4 - право на чтение
    • Цифра 2 - право на запись
    • Цифра 1 - право на исполнение

    Права для задаются суммой этих чисел, так число 6 (4+2) обеспечивает возможность чтения и записи, а цифра 7 (4+2+1) - предоставляет полный доступ (чтение + запись + выполнение) к файлу или директории. Для директорий право на "выполнение" означает "открытие" директории, возможность чтения ее содержимого (списка файлов).

    Для файла, восьмеричное число 0755 означает, что владелец файла (вторая цифра восьмеричного числа) имеет полный доступ, включая право чтения, редактирования и запуска скрипта (4+2+1), а группа (третья цифра) и все остальные (последняя цифра) имеют право читать файлы и выполнять скрипт (4 + 1). 

    При работе с cron на запускаемый скрипт рекомендуется выставить права доступа 755 (rwxr-xr-x).

    Выпадающие списки "Минуты""Часы""Числа месяца""Месяцы" и "Дни недели" позволят выбрать время запуска cron-задания. Каждый выпадающий список имеет три значения: "Все""Каждые" и "Выбранные".

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


    • Пункт выпадающего списка "Все", например, для поля "Числа месяца" означает, что запуск скрипта будет проводится каждый день месяца.
    • Пункт выпадающего списка "Каждые" позволяет выбрать интервал, например, каждые 3 дня.
    • Пункт выпадающего списка "Выбранные" позволяет выбрать конкретные дни на вышеприведённом рисунке скрипт будет запускаться 4, 6, 11 и 21 числа каждого месяца. Для того, чтобы отметить несколько пунктов в разделе "Выбранные" следует зажимать клавишу при щелчке мыши по выбранной позиции.

    После добавления нового задания, оно попадает в таблицу заданий, внешний вид которой представлен на рисунке ниже.

    Таблица заданий


    Активные задания, уже добавленные в системный пул заданий демона cron, помечены статусом "Да" в поле"Добавлено ли изменение". Не активные задания помечены статусом "Нет" и более светлым тоном шрифта. Внесенные в таблицу cron-заданий изменения вступают в силу в течении 5 минут.

    Формат времени в cron-заданиях

    В таблице cron-заданий время запуска записывается в классическом cron-формате (именно так записывается время в cron-задании). Формат строки задания выглядит следующим образом:

    Время в формате демона Сron

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

    Параметры могут принимать следующие значения:

    • минуты: 0-59
    • часы: 0-23
    • день месяца: 1-31
    • месяц: 1-12
    • день недели: 0-7 (0 и 7 означают воскресенье)
    • команда: команда которая должна быть выполнена, например, /main/reserve.php.

    Символ * означает диапазон с первого до последнего.

    Запуск скрипта каждый день в 23:00

    0 23 * * * /main/reserve.php

    Допускается указание нескольких значений для каждого параметра через запятую.

    Запуск скрипта каждый день в 0:00, 8:00 и 16:00.

    0 0,8,16 * * * /main/cleanup.php

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

    Cron-задание с неправильным синтаксисом (пробелы после запятых)

    0 0, 8, 16 * * * /main/cleanup.php 

    Запуск скрипта каждые полчаса между 18:00 и 23:00

    0,30 18-23 * * * /home/root/check.php

    Запуск скрипта каждые 10 минут

    0/10 * * * * /home/root/log.php

    Особенности выполнения cron-заданий

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

    В качестве текущей директории выступает директория htdocs вашего виртуального хоста. Последнее означает, что скрипт cron.php, расположенный в корне виртуального хоста, обращающийся к файлу cron.txt, расположенном в директории pict/files может выглядеть следующим образом.

      $fd fopen("pict/files/cron.txt","a"); 
      
    fwrite($fd"Обращение к файлу - ".date("d.m.Y H:i")."\r\n"); 
      
    fclose($fd); 
    ?>

    1. Рекомендуется использовать относительный путь, абсолютный путь от корня диска указывать не следует.
    2. Кроме того, в начале скрипта не нужно помещать bang line #! с указанием пути к интерпретатору.

    Если запускаемый скрипт находится не в корне виртуального хоста, а в каком-то подкаталоге, следует помнить, что текущей директорией всё равно остаётся корень виртуального хоста. Таким образом чтобы скрипт cron/cron.php создавал журнал срабатываний в каталоге cron, а не в корневом каталоге, следует изменить текущую директорию при помощи функции chdir(). Ниже приведен пример подобного скрипта.

    Создание журнала срабатываний cron-задания

      chdir("cron"); 
      
    $fd fopen("cron.txt","a"); 
      
    fwrite($fd"Обращение к файлу - ".date("d.m.Y H:i")."\r\n"); 
      
    fclose($fd); 
    ?>

    Для того, чтобы проверить работоспособность cron-задания рекомендуется вести журнал его срабатываний как это показано выше — в текстовый файл помещать время его выполнения. Дело в том, что об ошибке в синтаксисе PHP-скрипта вы не сможете узнать никак кроме как по журналу срабатываний. Если скрипт выполняется правильно по запросу из браузера, это ещё не значит, что он будет правильно выполняться по cron-заданию, так как $_GET, $_POST, $_COOKIE и $_SESSION массивы будут не доступны.

    Категория: РАЗНОЕ | Просмотров: 1027 | Добавил: admin | Рейтинг: 0.0/0 |
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    © 2024 - eluka.ru
    Развлекательный Портал - eluka

    ВХОД НА САЙТ
    ГОЛОСУЙ!
    Чего нужно побольше?
    Всего ответов: 1
    Поиск
    Календарь новостей
    «  Декабрь 2009  »
    ПнВтСрЧтПтСбВс
     123456
    78910111213
    14151617181920
    21222324252627
    28293031
    Статистика сайта


    КЛИКАЙ
    ДРУЗЬЯ САЙТА