Часто в крупных проектах возникает ситуация когда требуется часть логики сайта, связанную с исполнением периодических и продолжительных функций выполнять через планировщик задач. В UNIX-средах таким планировщиком является cron. В этой небольшой статье я покажу как это можно сделать на небольшом примере.
Без использования объектов Битрикс
Конечно, если вам нужно сделать какие-то действия, например почистить определенную папку, то подключать и использовать объекты Битрикс не требуется и для такого случая можно просто сделать скрипт такого вида:
// файл cronscript.php
#!/usr/bin/php
<?
// ваш код…
?>
и добавить в крон такую строку (если вам нужно выполнять скрипт в 0:00 каждый день):
0 0 * * * [путь_к_файлу]/cronscript.php >> [путь_к_файлу]/cronscript.log
Не забудьте сделать исполняемым файл cronscript.php командой chmod +x cronscript.php .
С использованием объектов Битрикс
Но если вам требуется использовать объекты битрикс, например вам нужно удалить старые капчи, которые накопились за сутки, то нужно подключить ядро Битрикс. Сделаем это:
// файл cronscript.php
#!/usr/bin/php
<?php
$_SERVER[«DOCUMENT_ROOT»] = «/home/hosting/www»;
$DOCUMENT_ROOT = $_SERVER[«DOCUMENT_ROOT»];
define(«NO_KEEP_STATISTIC», true);
define(«NOT_CHECK_PERMISSIONS», true);
require($_SERVER[«DOCUMENT_ROOT»].»/bitrix/modules/main/include/prolog_before.php»);
set_time_limit(0);
//ваш код…
CCaptchaAgent::DeleteOldCaptcha(86400);
require($_SERVER[«DOCUMENT_ROOT»].»/bitrix/modules/main/include/epilog_after.php»);
?>
Из кода видно, что вам будет нужно определить DOCUMENT_ROOT, где находится файлы вашего сайта на Битрикс и после этого подключить ядро. Этот скрипт точно также нужно сделать исполняемым и сделать аналогичную запись в cron.