Ejecutar agentes de CMS Bitrix mediante cron
Guía paso a paso para configurar los agentes de 1C-Bitrix para que se ejecuten mediante cron.
Los agentes en 1C-Bitrix son un mecanismo integrado para automatizar tareas recurrentes: envío de correos, indexación de búsqueda, limpieza de caché, procesamiento de eventos y mucho más.
Por defecto, los agentes se ejecutan en cada hit (cada vez que un usuario visita el sitio). Esto funciona bien en proyectos pequeños, pero con carga elevada o muchos agentes ralentiza el sitio considerablemente y aumenta la carga del servidor.
Cambiar los agentes a cron es el enfoque recomendado para todos los proyectos en alojamiento web, VPS y servidores dedicados. Esto descarga el sitio y garantiza una ejecución estable de las tareas según el calendario definido.
Paso 1: desactivar los agentes en hit
Conéctate al servidor mediante SSH y ejecuta estos comandos en la consola PHP (o edita /bitrix/.settings.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");
Salida esperada: NN
Paso 2: editar dbconn.php
Abre el archivo /bitrix/php_interface/dbconn.php:
nano /bitrix/php_interface/dbconn.php
Elimina (o comenta) estas líneas:
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
Añade en su lugar:
if (!(defined("CHK_EVENT") && CHK_EVENT === true)) {
define("BX_CRONTAB_SUPPORT", true);
}
Guarda el archivo (Ctrl+O → Enter → Ctrl+X).
Paso 3: crear el archivo del script cron
Crea el archivo /bitrix/php_interface/cron_events.php:
nano /bitrix/php_interface/cron_events.php
Inserta el siguiente código:
$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__) . "/../..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
define("CHK_EVENT", 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("subscribe")) {
$cPosting = new CPosting;
$cPosting->AutoSend();
}
Guarda el archivo (Ctrl+O → Enter → Ctrl+X).
Nuestros servicios y productos
Paso 4: añadir el job de cron
Abre crontab:
crontab -e
Añade esta línea (ejecución cada 5 minutos):
*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
Reemplaza /home/bitrix/www/ con la ruta real de tu sitio.
Guarda y sal.
Paso 5: optimizar el envío de correo (opcional)
Para acelerar el procesamiento de eventos de correo, aumenta el número de mensajes procesados por ejecución (recomendado: 20–50):
COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");
Notas útiles
- Si una nueva ejecución de cron arranca antes de que finalice la anterior — los agentes no se duplican (quedan bloqueados durante la ejecución).
- Para proyectos con alto volumen de correo, establece
mail_event_bulken un valor mayor (p. ej., 100) y ejecuta cron con más frecuencia (cada 1–2 minutos). - Revisa los logs en
/bitrix/.logs/ocron.logpara confirmar que cron se está ejecutando y que los agentes funcionan correctamente.
Ayuda
¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!