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

Hébergement webFonctionne sur des disques NVMe ultra-rapides. Convient aux sites de toute complexité.
Commande
VPSInfrastructure cloud flexible avec accès root complet.
Commande
Serveurs dédiésServeurs physiques pour une performance maximale.
Commande

É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/ ou cron.log pour 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 !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter