Exécuter les agents CMS Bitrix via cron
Guide pas à pas pour configurer les agents 1C-Bitrix afin qu'ils s'exécutent via cron.
Les agents dans 1C-Bitrix sont un mécanisme intégré d'automatisation des tâches récurrentes : envoi d'e-mails, indexation de la recherche, nettoyage du cache, traitement des événements, et bien plus encore.
Par défaut, les agents s'exécutent à chaque hit (à chaque visite d'un utilisateur sur le site). Cela fonctionne bien pour les petits projets, mais en cas de charge élevée ou avec de nombreux agents, cela ralentit considérablement le site et augmente la charge serveur.
Le basculement des agents vers cron est l'approche recommandée pour tous les projets sur hébergement web, VPS et serveurs dédiés. Cela décharge le site et garantit une exécution stable des tâches selon le calendrier défini.
Étape 1 : Désactiver les agents sur hit
Connectez-vous au serveur via SSH et exécutez ces commandes dans la console PHP (ou modifiez /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");
Résultat attendu : NN
Étape 2 : Modifier dbconn.php
Ouvrez le fichier /bitrix/php_interface/dbconn.php :
nano /bitrix/php_interface/dbconn.php
Supprimez (ou commentez) ces lignes :
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
Ajoutez à la place :
if (!(defined("CHK_EVENT") && CHK_EVENT === true)) {
define("BX_CRONTAB_SUPPORT", true);
}
Enregistrez le fichier (Ctrl+O → Entrée → Ctrl+X).
Étape 3 : Créer le fichier de script cron
Créez le fichier /bitrix/php_interface/cron_events.php :
nano /bitrix/php_interface/cron_events.php
Insérez le code suivant :
$_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();
}
Enregistrez le fichier (Ctrl+O → Entrée → Ctrl+X).
Nos produits et services
Étape 4 : Ajouter la tâche cron
Ouvrez crontab :
crontab -e
Ajoutez cette ligne (exécution toutes les 5 minutes) :
*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
Remplacez /home/bitrix/www/ par le chemin réel vers votre site.
Enregistrez et quittez.
Étape 5 : Optimiser l'envoi d'e-mails (optionnel)
Pour accélérer le traitement des événements e-mail, augmentez le nombre de messages traités par exécution (recommandé : 20–50) :
COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");
Remarques utiles
- Si une nouvelle exécution de cron démarre avant la fin de la précédente — les agents ne se dupliquent pas (ils sont verrouillés pendant l'exécution).
- Pour les projets avec un volume d'e-mails important, définissez
mail_event_bulkà une valeur plus élevée (par ex. 100) et augmentez la fréquence de cron (toutes les 1–2 minutes). - Consultez les logs dans
/bitrix/.logs/oucron.logpour vérifier que cron s'exécute bien et que les agents fonctionnent.
Aide
Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !