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

WebhostingLäuft auf ultraschnellen NVMe-Laufwerken. Geeignet für Websites jeder Komplexität.
Bestellen
VPSFlexible Cloud-Infrastruktur mit vollem Root-Zugriff.
Bestellen
Dedizierte ServerBare-Metal-Server für maximale Leistung.
Bestellen

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_bulk höher (z. B. 100) und lassen Sie cron häufiger laufen (alle 1–2 Minuten).
  • Überprüfen Sie die Logs in /bitrix/.logs/ oder cron.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!

Hilfe benötigt?Unsere Ingenieure helfen Ihnen kostenlos bei jeder Frage in wenigen MinutenKontaktieren Sie uns