Битрикс. Перенос агентов на CRON

Для начала полностью отключим выполнение агентов на хите. Для этого выполним следующую команду в php консоли (вашсайт.ru//bitrix/admin/php_command_line.php).

		
		<?
COption::SetOptionString("main", "agents_use_crontab", "N"); 
echo COption::GetOptionString("main", "agents_use_crontab", "N"); 

COption::SetOptionString("main", "check_agents", "N"); 
echo COption::GetOptionString("main", "check_agents", "Y");
?>	
	

В результате выполнения должно быть "NN".

После этого убираем из файла /bitrix/php_interface/dbconn.php определение следующих констант:

		
		define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);	
	

И добавляем в этот же файл:

		
		<?
if(!(defined("CHK_EVENT") &amp;&amp; CHK_EVENT===true))
   define("BX_CRONTAB_SUPPORT", true);	
	

Теперь необходимо создать файл для проверки агентов и рассылки системных сообщений /bitrix/php_interface/cron_events.php:

		
		$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../.."); 
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('BX_NO_ACCELERATOR_RESET', true);
define('CHK_EVENT', true);
define('BX_WITH_ON_AFTER_EPILOG', true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

@set_time_limit(0);
@ignore_user_abort(true);

CAgent::CheckAgents();
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
CEvent::CheckEvents();

if(CModule::IncludeModule('sender'))
{
    \Bitrix\Sender\MailingManager::checkPeriod(false);
    \Bitrix\Sender\MailingManager::checkSend();
}

require($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/tools/backup.php");
CMain::FinalActions();	
	

Теперь нужно этот скрипт в cron:

		
		*/1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php	
	

Расшифровка строки:

*/1 * * * * - частота запуска;

/usr/bin/php - путь до php, может быть и другой путь у php (перед вводом команды, лучше заранее определить путь);

/home/bitrix/www/ - это тоже зависит зависит от сервера, чтобы узнать,  распечатать в командной строке $_SERVER;

Шаги для выполнения:

1. Открываем редактор, по умолчанию идет VI

		
		crontab -e	
	

Если эта команда выполняется в первый раз, система предложит выбрать редактор для Cron

no crontab for sk - using an empty one
Select an editor. To change later, run 'select-editor'.

Будет выбор установленных в систему редакторов:

		
		1. /bin/nano
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]:	
	

Если выбран VIM, то:

  • перейти в режим редактирования нажать i 
  • добавить строку, например, */1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
  • вернуться в обычный режим
  • потом ввести :wq и нажать

Количество просмотров: 331


Понравилась статья?

Возврат к списку