CRON на Windows машинах 1Gb
Материал из 1GbWiki.
С CRON существует следующая общая для всех систем проблема, которую приходится учитывать: среда запуска скрипта из под CRON-а (shell доступа) и из-под веб-сервера различается, порой существенно.
На Windows машине отличие могло бы быть и того больше, так как службы CRON там нет и даже традиция борьбы с такими явлениями отсутствует.
Содержание |
[править] CRON на 1Gb
Реализация CRON-а на хостинге 1Gb предлагает вам несколько вариантов запуска скриптов по расписанию.
[править] crontab (UNIX)
Традиционный UNIX-cron доступен вам через SSH доступ. Он работает в том случае, если сервер вашего сайта - UNIX (см. «полный список функций», «управление сайтами и серверами».
Помните об особенности, с которой началась статья: настройки консольного PHP могут немного отличаться от того, что исполняет Веб-сервер. Вам нужно отладить запуск скрипта с помощью непосредственной проверки его работы через shell, и только потом размещать его вызов в CRON.
[править] Общий HTTP-cron
Доступен и для Windows, и для UNIX сайтов, и заключается в том, что скрипт вашего сайта вызывается как обычная страница, через HTTP протокол.
Настраивается в личном кабинете: Полный список функций / Галочка "Сайты" / ссылка "CRON (исполнение скриптов по расписанию)"
Плюсы:
- Скрипт работает точно так же, как будто его открыл пользователь из обозревателя.
- Легко отлаживать, отсутствуют косвенные эффекты.
Минусы:
- Невысокая точность вызова по времени.
- Веб-сервер может прервать исполнение ресурсоемкого или долгого скрипта.
[править] Настройка
Инструкция по настройке есть на странице настройки. В поле "Адрес от корня" нужно писать относительный адрес файла внутри папки http.
Графа «результат» дает вам возможность предположить, удалось ли вообще начать исполнение скрипта. Но просим вас помнить, что система дожидается результата исполнения скрипта в течение 10 секунд, затем скрипт продолжает исполняться, но результат его исполнения уже не попадает в этот отчет. Это нормально – исполнение скрипта при этом продолжается по внутренним правилам Веб-сервера, то есть, типично, скрипт может исполняться 60 – 120 секунд, а некоторые типы скриптов и больше. Проверяйте результат исполнения скрипта по фактическим действиям, которые он совершил, или по лог-файлам.
Для того, чтобы выполнение скрипта продолжалось после обрыва соединения CRON-системой нужно установить параметры
ini_set('ignore_user_abort', 1); ini_set('max_execution_time', 0);
Это позволит вашему скрипту выполняться несколько минут.