Источник: http://phpbbguru.net
Для этого необходимо выполнить ряд действий:
1) создать параметр конфигурации, задающие периодичность выполнения скрипта. Для этого необходимо присвоить имя переменной и задать её значение - в секундах (это и будет периодичность выполнения скрипта). Допустим, переменную произвольно назовем my_script_gc. Внести её можем напрямик в базу, добавив в таблицу phpbb_config строку, где config_name будет равно my_script_gc, а config_value равно, например, 60 (т.е. периодичность - ежеминутно).
Например :
- Код: Выделить всё • Развернуть
- INSERT INTO phpbb_config (config_name, config_value) VALUES ('my_script_gc', '60');
В папке cache удалим кэш глобальных значений конфигурации - файл data_global.php.
2) Аналогично, создаем значение для хранения времени последнего выполнения нашей крон-функции, оно будет динамическим (т.е. не кэшируемым):
- Код: Выделить всё • Развернуть
- INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES (my_script_last_gc', '0', 1);
3) Добавляем задание в крон для периодического выполнения. При этом допустим, что наш скрипт, содержащий необходимую для выполнения функцию my_cron_function, называется my_cron.php и находится в папке includes.
Реализуем:
- Код: Выделить всё • Развернуть
- OPEN
 cron.php
 FIND
 case 'prune_forum':
 BEFORE, ADD
 case 'my_cron_function':
 if (time() - $config['my_script_gc'] <= $config['my_script_last_gc'])
 {
 break;
 }
 
 include_once($phpbb_root_path . 'includes/my_cron.' . $phpEx);
 if ($use_shutdown_function)
 {
 register_shutdown_function('my_cron_function');
 }
 else
 {
 my_cron_function();
 }
 break;
4) В файле includes/functions.php находим функцию page_footer, в ней задаем условия для срабатывания крона, например:
- Код: Выделить всё • Развернуть
- OPEN
 includes/functions.php
 FIND
 else if (time() - $config['session_gc'] > $config['session_last_gc'])
 {
 $cron_type = 'tidy_sessions';
 }
 AFTER, ADD
 else if (time() - $config['my_script_gc'] > $config['my_script_last_gc'])
 {
 $cron_type = 'my_cron_function';
 }
При этом важно сначала отладить правильную работу самой функции, запуская её напрямую без условий, например, в отдельном скрипте. Иначе, если при ее выполнении будут возникать ошибки, работа крона в целом может быть нарушена.
Важное замечание: в обязательном порядке в самом конце функции, вызываемой в кроне (в нашем случае, my_cron_function), должно записываться в таблицу конфигурации время последнего выполнения функции. В нашем случае (для примера)
- Код: Выделить всё • Развернуть
- set_config('my_script_last_gc', time(), true);
Проверить, какая именно задача выполняется кроном в данный момент, можно, просмотрев исходный код главной страницы в браузере, в самом низу его (в футере) можно нати строку (если в этот момент выполняется крон) наподобие
- Код: Выделить всё • Развернуть
- <img src="./cron.php?cron_type=my_cron_function" width="1" height="1" alt="cron" /></div>
P.S Вот наткнулся на этот мануал , мне показался интересным.



