Вы не вошли.
Страницы 1
В движке появилась возможность запускать некоторые задания периодически посредством cron, который установлен и доступен на большинстве хостингов.
За это отвечает скрипт protected/cron.php.
Т.к. он находится в защищенной директории, то извне доступ к нему закрыт. Но это не мешает работать с ним изнутри сервера.
Для того, чтобы скрипт начал выполнять задания, нужно добавить его в список работ cron'а (crontab). Как именно - зависит от вашего хостинга. Например, из командной строки через ssh, либо через web-интерфейс панели управления.
Задание должно выглядеть примерно так:
*/5 * * * * php -f /path/to/root/protected/cron.php 2>&1 > /dev/null
Тут мы запускаем cron.php на выполнение каждые 5 минут.
Для того, чтобы добавить новые задания на выполнение, нет необходимости модифицировать сам protected/cron.php. Достаточно просто указать их в файле настроек protected/config/cron.php.
Что для этого нужно:
Создаем новый класс для вашего задания, наследуем его от класса PeComponent, сохраняем в директории protected/. (Либо, если вы уже добавляли свой класс с заданиями, можете воспользоваться им и добавить ему новый метод)
Пишете метод класса, который будет выполнять нужную работу.
Методу не должно передаваться каких-либо переменных, и он не должен ничего возвращать вызывающему коду.
Если периодичность выполнения работы не совпадает с периодичностью запуска cron.php, добавьте соответствующую проверку. Например, можно хранить дату и время предыдущего запуска в файле в директории cache/ или в базе данных, и сравнивать с ней.
Добавьте правила инициализации объекта вашего класса в protected/config/cron.php, как это описано в этой статье
Там же в protected/config/cron.php добавьте в массив Jobs строку вида:
'jobName' => array('component' => 'objectName', 'method' => 'methodName'),
(С запятой в конце строки)
Здесь нужно заменить jobName на название, которое вы присвоите своему заданию, objectName - на название, которое вы назначили инициализированному объекту вашего класса на предыдущем шаге, methodName - на название метода, который должен выполняться.
Все, после сохранения protected/config/cron.php уже при следующем запуске будет выполнена новая задача.
P.S. Про отладку.
Если при работе вашего кода будет вызвано исключение, то сообщение об ошибке и трассировку (debug trace) можно посмотреть в логе в cache/cron_error.log.
Если при работе кода произошла фатальная ошибка, то искать сообщение нужно в логах сервера, и тут все зависит от настроек вашего хостинга (хотя я надеюсь, что на хостинг вы будете выкладывать уже отлаженный код).
Страницы 1
[ Сгенерировано за 0.016 сек, 8 запросов выполнено - Использовано памяти: 1.87 MiB (Пик: 1.93 MiB) ]