CMS-Bitrix-Agenten per cron ausführen
Schritt-für-Schritt-Anleitung zur Konfiguration von 1C-Bitrix-Agenten für den Betrieb über cron.
Agenten in 1C-Bitrix sind ein integrierter Mechanismus zur Automatisierung wiederkehrender Aufgaben: E-Mail-Versand, Suchindexierung, Cache-Bereinigung, Ereignisverarbeitung und vieles mehr.
Standardmäßig werden Agenten auf Hit ausgeführt (bei jedem Seitenaufruf durch einen Benutzer). Für kleine Projekte funktioniert das gut, aber bei hoher Last oder vielen Agenten verlangsamt es die Website erheblich und erhöht die Server-Last.
Die Umstellung der Agenten auf cron ist der empfohlene Ansatz für alle Projekte auf Webhosting, VPS und dedizierten Servern. Dies entlastet die Website und gewährleistet eine stabile, planmäßige Aufgabenausführung.
Schritt 1: Agenten auf Hit deaktivieren
Verbinden Sie sich per SSH mit dem Server und führen Sie folgende Befehle in der PHP-Konsole aus (oder bearbeiten Sie /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");
Erwartete Ausgabe: NN
Schritt 2: dbconn.php bearbeiten
Öffnen Sie die Datei /bitrix/php_interface/dbconn.php:
nano /bitrix/php_interface/dbconn.php
Entfernen (oder kommentieren) Sie diese Zeilen:
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
Fügen Sie stattdessen ein:
if (!(defined("CHK_EVENT") && CHK_EVENT === true)) {
define("BX_CRONTAB_SUPPORT", true);
}
Speichern Sie die Datei (Ctrl+O → Enter → Ctrl+X).
Schritt 3: Cron-Skriptdatei erstellen
Erstellen Sie die Datei /bitrix/php_interface/cron_events.php:
nano /bitrix/php_interface/cron_events.php
Fügen Sie folgenden Code ein:
$_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();
}
Speichern Sie die Datei (Ctrl+O → Enter → Ctrl+X).
Unsere Produkte und Dienste
Schritt 4: Cron-Job hinzufügen
Öffnen Sie crontab:
crontab -e
Fügen Sie diese Zeile hinzu (Ausführung alle 5 Minuten):
*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
Ersetzen Sie /home/bitrix/www/ durch den tatsächlichen Pfad zu Ihrer Website.
Speichern und beenden.
Schritt 5: E-Mail-Versand optimieren (optional)
Um die Verarbeitung von E-Mail-Ereignissen zu beschleunigen, erhöhen Sie die Anzahl der pro Durchlauf verarbeiteten Nachrichten (empfohlen: 20–50):
COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");
Nützliche Hinweise
- Wenn ein neuer Cron-Lauf startet, bevor der vorherige abgeschlossen ist — werden Agenten nicht dupliziert (sie werden während der Ausführung gesperrt).
- Bei Projekten mit hohem E-Mail-Aufkommen setzen Sie
mail_event_bulkhöher (z. B. 100) und lassen Sie cron häufiger laufen (alle 1–2 Minuten). - Überprüfen Sie die Logs in
/bitrix/.logs/odercron.log, um zu bestätigen, dass cron läuft und Agenten ausgeführt werden.
Hilfe
Bei Fragen oder wenn Sie Unterstützung brauchen, erreichen Sie uns jederzeit über das Ticketsystem — wir helfen Ihnen gern weiter!