Заставляем работать cron.php в phpbb3

Установка и настройка форумов, CMS и прочих веб-приложений

Модератор: doliar

Правила форума
По вопросам настройки и установки коммерческих web приложений (IPB, DLE, vBulletin и т.д.) обращайтесь в техническую поддержку данных web приложений.

На данном форуме не рекомендуется создавать темы по вопросам настройки и установки коммерческих web приложений.

Заставляем работать cron.php в phpbb3

Сообщение Dimanok » 21 апр 2009, 18:19

Автор: rxu
Источник: 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 Вот наткнулся на этот мануал , мне показался интересным.
www.strike64.ru - Крупнейшая конференция о играх корпорации Valve, Поволжья
Dimanok
Автор
 
Сообщения: 3506
Зарегистрирован: 05 июл 2008, 11:02
Откуда: Саратов
Домен: http://www.strike64.ru

Re: Заставляем работать cron.php в phpbb3

Сообщение Костик » 21 апр 2009, 18:25

а зачем вообще он нужен то ?
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: Заставляем работать cron.php в phpbb3

Сообщение Dimanok » 21 апр 2009, 18:26

Костик писал(а):а зачем вообще он нужен то ?

допустим бекапить бд...хотя вобще для всего , зависит от уровня фантазии :oops:
www.strike64.ru - Крупнейшая конференция о играх корпорации Valve, Поволжья
Dimanok
Автор
 
Сообщения: 3506
Зарегистрирован: 05 июл 2008, 11:02
Откуда: Саратов
Домен: http://www.strike64.ru


Вернуться в Установка веб-приложений

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

cron