Никак не могу разобраться с кроном.
На сайте часть сторонних модулей работают как периодические агенты, а другая часть - как непериодические.
В зависимости от того, как были обозначены константы BX_CRONTAB_SUPPORT и BX_CRONTAB в /bitrix/php_interface/dbconn.php у меня работали либо только периодические, либо только непериодические агенты. То есть, либо почта могла вообще не отправляться, либо одни модули не обновлялись, либо другие модули не экспортировали данные на сторонние сайты и т.д. Поначалу я вручную переводил все агенты в один тип (по периодичности), но после обновления модулей или смены настроек этих модулей, периодичность этих модулей менялось автоматически.
Решил проблему следующим кодом в /bitrix/php_interface/dbconn.php:
Это значит, что значения BX_CRONTAB_SUPPORT и BX_CRONTAB меняются случайным образом. Благодаря этому теперь все агенты работают по крону.
НО теперь произошла другая проблема - перестало работать Регулярное резервное копирование сайта. В журнале никаких ошибок, связанных с регулярным копированием, вообще нет. Как будто модуль регулярного резервного копирования даже не запускался.
Вручную создать резервную копию получается без проблем.
Пробовал разные варианты резервного копирования:
Подскажите, как можно решить такую проблему, чтобы:
На сайте часть сторонних модулей работают как периодические агенты, а другая часть - как непериодические.
В зависимости от того, как были обозначены константы BX_CRONTAB_SUPPORT и BX_CRONTAB в /bitrix/php_interface/dbconn.php у меня работали либо только периодические, либо только непериодические агенты. То есть, либо почта могла вообще не отправляться, либо одни модули не обновлялись, либо другие модули не экспортировали данные на сторонние сайты и т.д. Поначалу я вручную переводил все агенты в один тип (по периодичности), но после обновления модулей или смены настроек этих модулей, периодичность этих модулей менялось автоматически.
Решил проблему следующим кодом в /bitrix/php_interface/dbconn.php:
Код |
---|
$r = rand(1, 10); if ($r > 4) { if(!(defined("CHK_EVENT") && CHK_EVENT===true)) { define("BX_CRONTAB", true); //Вы сказали Битриксу что у вас теперь любой скрипт запущен кроном. define("BX_CRONTAB_SUPPORT", true); //переносит отправку почты на крон. } } else { define("BX_CRONTAB", false); define("BX_CRONTAB_SUPPORT", false); } |
НО теперь произошла другая проблема - перестало работать Регулярное резервное копирование сайта. В журнале никаких ошибок, связанных с регулярным копированием, вообще нет. Как будто модуль регулярного резервного копирования даже не запускался.
Вручную создать резервную копию получается без проблем.
Пробовал разные варианты резервного копирования:
- с агентами на cron
- через прямой запуск /bitrix/modules/main/tools/backup.php
Подскажите, как можно решить такую проблему, чтобы:
- Все агенты работали на кроне.
- Письмо отправлялось с сайта сразу.
- Нормально работало Регулярное резервное копирование.
- И не появилась какая-нибудь еще ошибка из-за крона.