Eseguire gli agenti CMS Bitrix tramite cron

Guida passo passo alla configurazione degli agenti 1C-Bitrix per l'esecuzione tramite cron.

Gli agenti in 1C-Bitrix sono un meccanismo integrato per l'automazione delle attività ricorrenti: invio di e-mail, indicizzazione della ricerca, pulizia della cache, elaborazione degli eventi e molto altro.

Per impostazione predefinita, gli agenti vengono eseguiti a ogni hit (a ogni visita di un utente sul sito). Questo funziona bene per i piccoli progetti, ma in caso di carico elevato o con molti agenti rallenta significativamente il sito e aumenta il carico del server.

Il passaggio degli agenti a cron è l'approccio consigliato per tutti i progetti su web hosting, VPS e server dedicati. Alleggerisce il sito e garantisce un'esecuzione stabile delle attività secondo la pianificazione.

Passaggio 1: disabilitare gli agenti sull'hit

Connettiti al server tramite SSH ed esegui questi comandi nella console PHP (oppure modifica /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");

Output atteso: NN

Passaggio 2: modificare dbconn.php

Apri il file /bitrix/php_interface/dbconn.php:

nano /bitrix/php_interface/dbconn.php

Rimuovi (o commenta) queste righe:

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

Aggiungi al loro posto:

if (!(defined("CHK_EVENT") && CHK_EVENT === true)) {
    define("BX_CRONTAB_SUPPORT", true);
}

Salva il file (Ctrl+O → Invio → Ctrl+X).

Passaggio 3: creare il file dello script cron

Crea il file /bitrix/php_interface/cron_events.php:

nano /bitrix/php_interface/cron_events.php

Inserisci il codice seguente:

$_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();
}

Salva il file (Ctrl+O → Invio → Ctrl+X).

I nostri prodotti e servizi

Hosting WebServizi di hosting affidabili per siti web di qualsiasi dimensione.
Ordina
VPSInfrastruttura cloud flessibile con accesso root completo.
Ordina
Server DedicatiServer dedicati per le massime prestazioni.
Ordina

Passaggio 4: aggiungere il job cron

Apri crontab:

crontab -e

Aggiungi questa riga (esecuzione ogni 5 minuti):

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

Sostituisci /home/bitrix/www/ con il percorso effettivo del tuo sito. Salva ed esci.

Passaggio 5: ottimizzare l'invio delle e-mail (opzionale)

Per velocizzare l'elaborazione degli eventi e-mail, aumenta il numero di messaggi elaborati per ogni esecuzione (consigliato: 20–50):

COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");

Note utili

  • Se una nuova esecuzione di cron inizia prima che la precedente sia terminata — gli agenti non si duplicano (vengono bloccati durante l'esecuzione).
  • Per i progetti con un alto volume di e-mail, imposta mail_event_bulk a un valore più alto (es. 100) ed esegui cron più frequentemente (ogni 1–2 minuti).
  • Controlla i log in /bitrix/.logs/ o cron.log per verificare che cron sia in esecuzione e che gli agenti vengano elaborati correttamente.

Aiuto

Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!

Hai bisogno di aiuto?I nostri ingegneri ti aiuteranno gratuitamente con qualsiasi domanda in pochi minutiContattaci