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
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_bulka un valore più alto (es. 100) ed esegui cron più frequentemente (ogni 1–2 minuti). - Controlla i log in
/bitrix/.logs/ocron.logper 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!