Dokumentation · Fehlerbehebung
Cron-Fehler
Dieses Dokument behandelt Probleme im Zusammenhang mit der Automatisierung geplanter Importe, einschliesslich WP-Cron-Ausfällen, Konfigurationsproblemen beim Server-Cron und Fehlern des Bild-Warteschlangen-Workers.
Wann Sie dieses Dokument verwenden sollten
Lesen Sie dieses Dokument, wenn:
- Automatische Importe nicht gemäss dem konfigurierten Zeitplan ausgeführt werden.
- Die auf dem Admin-Dashboard angezeigte Zeit des letzten Importlaufs nicht voranschreitet.
- Das Plugin-Protokoll (Log) keine Importaktivität anzeigt, obwohl die Automatisierung aktiviert ist.
- Der REST-basierte Cron-Endpunkt Fehler zurückgibt oder keine Importe auslöst.
- Der Bild-Warteschlangen-Worker in der Warteschlange befindliche Bilder nicht verarbeitet.
Übersicht
Das Plugin unterstützt zwei Modi für die Importautomatisierung:
- WP-Cron-Modus (Standard): Importe werden durch das in WordPress integrierte Pseudo-Cron-System (
wp-cron.php) ausgelöst. WP-Cron wird ausgeführt, wenn eine WordPress-Seite geladen wird; auf Websites mit wenig Traffic läuft es möglicherweise nicht zuverlässig. - Server-Cron-Modus: Ein echter Cron-Job des Betriebssystems ruft in einem festen Intervall entweder
wp-cron.phpoder den dedizierten REST-Endpunkt des Plugins auf. Dies ist zuverlässiger und wird für Live-Websites empfohlen.
Beide Modi verwenden denselben gemeinsamen Import-Runner (Scheduler::run_import()). Das Ergebnis ist identisch, unabhängig davon, welcher Trigger verwendet wird.
Verfügbare Zeitplan-Optionen
Wenn die WP-Cron-Automatisierung aktiviert ist, stehen die folgenden Zeitpläne zur Verfügung:
| Zeitplan-Schlüssel | Intervall |
|---|---|
hourly | Alle 60 Minuten |
as24ci_every_6_hours | Alle 6 Stunden |
twicedaily | Zweimal täglich |
daily | Einmal täglich |
as24ci_custom | Benutzerdefiniertes Intervall (Mindestens 15 Minuten, konfigurierbar) |
Für die Zeitpläne daily und twicedaily kann eine Startzeit (HH:MM, 24-Stunden-Format, in der Zeitzone der WordPress-Website) konfiguriert werden. Die Standardstartzeit ist 06:00.
REST-Cron-Endpunkt
Das Plugin registriert einen REST-Endpunkt, der von einem externen Scheduler aufgerufen werden kann:
GET /wp-json/as24ci/v1/cron-import
Eine Authentifizierung ist erforderlich. Die bevorzugte Methode ist:
Authorization: Bearer YOUR_TOKEN
Der Token kann auch als Query-Parameter übergeben werden (?token=YOUR_TOKEN), wobei die Verwendung des Headers empfohlen wird, um zu verhindern, dass der Token in den Zugriffsprotokollen des Servers erscheint.
Der Token wird automatisch generiert und ist im Plugin-Einstellungs-Tab Import & Limits sichtbar. Sie können ihn auf derselben Seite neu generieren.
Bild-Warteschlangen-Worker
Wenn der Bild-Warteschlangen-Modus aktiviert ist, reiht das Plugin während der Cron- und REST-Importläufe verbleibende Fahrzeugbilder für die asynchrone Verarbeitung in eine Warteschlange ein. Ein separater WP-Cron-Hook (as24ci_image_queue_process) führt den Bild-Warteschlangen-Worker aus. Dieser Worker verarbeitet bis zu 30 Bilder pro Batch und läuft so lange weiter, bis die Warteschlange leer ist oder das Zeitbudget erschöpft ist. Wenn Elemente übrig bleiben, plant er sich automatisch neu.
Voraussetzungen
- Der automatische Import ist in den Plugin-Einstellungen (Tab Import & Limits → Automation) aktiviert.
- Mindestens eine Seller ID ist konfiguriert.
- Die API-Verbindung funktioniert. Überprüfen Sie dies auf der Systemstatus-Seite.
- Für den Server-Cron-Modus: Die Hosting-Umgebung unterstützt geplante Aufgaben (Cron, geplante Aufgaben oder einen gleichwertigen Dienst).
Diagnoseschritte
Schritt 1: Bestätigen, dass die Automatisierung aktiviert ist
- Gehen Sie im Plugin zum Tab Import & Limits → Automation.
- Bestätigen Sie, dass Enable automatic import aktiviert ist.
- Bestätigen Sie, dass der gewünschte Zeitplan ausgewählt ist.
- Speichern Sie die Einstellungen, falls Änderungen vorgenommen wurden.
Schritt 2: Letzte Laufzeit überprüfen
- Überprüfen Sie auf dem Admin-Dashboard des Plugins oder im Tab „System & Help“ den Zeitstempel bei Last import run.
- Wenn der Zeitstempel älter als zwei vollständige Zeitplan-Intervalle ist, wird die Automatisierung wahrscheinlich nicht ausgelöst.
Schritt 3: Überprüfen, ob das WP-Cron-Ereignis geplant ist
Für den WP-Cron-Modus:
- Verwenden Sie ein WordPress-Plugin, das geplante Ereignisse auflisten kann (z. B. WP Crontrol), oder die WP-CLI:
wp cron event list
- Suchen Sie nach dem Hook
as24ci_scheduled_import. Bestätigen Sie, dass er vorhanden ist und seine nächste Ausführungszeit in der Zukunft liegt. - Wenn der Hook fehlt, speichern Sie die Automatisierungseinstellungen im Plugin erneut, um ihn neu zu planen.
Schritt 4: Überprüfen, ob WP-Cron auf dieser Website funktioniert
WP-Cron kann in einigen Hosting-Umgebungen oder durch Performance-Plugins deaktiviert sein:
- Suchen Sie in der Datei
wp-config.phpnach der Zeile:
define('DISABLE_WP_CRON', true);
Wenn diese Konstante auf true gesetzt ist, ist WP-Cron deaktiviert. Sie müssen stattdessen einen Server-Cron oder den REST-Endpunkt verwenden.
- Stellen Sie sicher, dass regelmässig Seitenaufrufe auf der Website stattfinden (mindestens einmal pro Zeitplan-Intervall). Auf Websites mit wenig Traffic wird WP-Cron möglicherweise nicht zur erwarteten Zeit ausgelöst.
- Nutzen Sie einen Dienst, der Ihre Website-URL regelmässig anpingt, um sicherzustellen, dass WP-Cron die Möglichkeit zur Ausführung erhält, oder wechseln Sie in den Server-Cron-Modus.
Schritt 5: Den REST-Cron-Endpunkt testen
Wenn Sie den REST-Endpunkt verwenden oder verwenden möchten:
- Rufen Sie den Cron-Token im Bereich Import & Limits → Cron Token ab.
- Senden Sie eine Testanfrage von Ihrem Server:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://your-site.example.com/wp-json/as24ci/v1/cron-import"
- Eine erfolgreiche Antwort gibt HTTP 200 mit
"success": trueund den Import-Zahlen zurück. - Eine 403-Antwort weist auf einen ungültigen oder fehlenden Token hin. Überprüfen Sie den Token in den Plugin-Einstellungen.
- Eine 429-Antwort bedeutet, dass der Import bereits läuft (Sperre ist aktiv). Warten Sie und versuchen Sie es erneut.
- Eine 500-Antwort weist auf eine Ausnahme während des Importlaufs hin. Überprüfen Sie das Plugin-Protokoll auf Details.
Wenn die REST-API nicht erreichbar ist, stellen Sie sicher, dass „Pretty Permalinks“ aktiviert sind (Einstellungen → Permalinks → Speichern) und dass die WordPress REST-API nicht durch ein Sicherheits-Plugin oder eine Serverkonfiguration blockiert wird.
Schritt 6: Aufzeichnung des externen Cron-Pings überprüfen
Wenn Sie einen Server-Cron-Job verwenden, der wp-cron.php direkt aufruft, können Sie ?as24ci_cron=1 an die URL anhängen, um den Ping aufzuzeichnen:
https://your-site.example.com/wp-cron.php?doing_wp_cron&as24ci_cron=1
Das Plugin zeichnet den Zeitstempel dieses Pings auf und zeigt ihn im Tab „System & Help“ als letzte externe Cron-Aktivitätszeit an.
Schritt 7: Auf eine veraltete Importsperre prüfen
Wenn ein vorheriger Importlauf unterbrochen wurde, ohne seine Sperre (Lock) freizugeben, werden nachfolgende Läufe bis zu 40 Minuten lang übersprungen. Das Protokoll enthält dann:
Import runner (wp-cron): already in progress, skipping.
Wenn die Sperre tatsächlich veraltet ist (der ursprüngliche Lauf ist nicht mehr aktiv), warten Sie, bis die 40-minütige TTL abgelaufen ist. Die Sperre wird automatisch aufgehoben, wenn sie älter als 40 Minuten ist, sobald der nächste Lauf zu starten versucht.
Um die Sperre sofort aufzuheben:
- Löschen Sie den WordPress-Transient
as24ci_cron_import_runningmithilfe eines Transient-Management-Plugins oder der WP-CLI:
wp transient delete as24ci_cron_import_running
Schritt 8: Fehler beim Bild-Warteschlangen-Worker untersuchen
Wenn Bilder nach dem Import nicht verarbeitet werden:
- Suchen Sie im Plugin-Protokoll nach Einträgen, die
Image queue workerenthalten. - Bestätigen Sie, dass der Hook
as24ci_image_queue_processin der WP-Cron-Ereignisliste vorhanden ist. - Wenn die Bild-Warteschlangensperre (
as24ci_image_queue_running) veraltet ist, löschen Sie diese:
wp transient delete as24ci_image_queue_running
Die Bild-Warteschlangensperre hat eine TTL von 10 Minuten und wird ebenfalls automatisch gelöscht, wenn sie veraltet ist.
- Überprüfen Sie die Statistiken unter Image queue last run im Tab „System & Help“ auf die Anzahl der verarbeiteten, fehlgeschlagenen und verbleibenden Elemente.
Konfigurationsreferenz
| Einstellung | Ort | Beschreibung |
|---|---|---|
| Enable automatic import | Import & Limits → Automation | Hauptschalter für die WP-Cron-Automatisierung. Standard: deaktiviert. |
| Schedule | Import & Limits → Automation | Import-Häufigkeit. Standard: stündlich. |
| Start time | Import & Limits → Automation | Für tägliche / zweimal tägliche Zeitpläne. Standard: 06:00 (Website-Zeitzone). |
| Custom interval (minutes) | Import & Limits → Automation | Für benutzerdefinierten Zeitplan. Minimum: 15 Minuten. Standard: 30 Minuten. |
| Cron mode | Import & Limits | Steuert, welcher Trigger-Typ verwendet wird (wp-cron oder server-cron). |
| Cron token | Import & Limits | Geheimer Token für den REST-Endpunkt. Automatisch generiert. Kann neu generiert werden. |
| Max vehicles per run | Import & Limits | Begrenzt die pro automatisiertem Lauf verarbeiteten Fahrzeuge. 0 = unbegrenzt. |
| Image queue mode | Import & Limits | Zusätzliche Fahrzeugbilder für die Hintergrundverarbeitung in die Warteschlange einreihen. Standard: aktiviert. |
Betriebshinweise
- WP-Cron-Ereignisse erfordern Seitenaufrufe, um ausgelöst zu werden. Auf Staging- oder Entwicklungsumgebungen ohne regelmässige Besucher läuft WP-Cron nicht zuverlässig. Verwenden Sie stattdessen den REST-Endpunkt mit einem echten Server-Cron-Job.
- Der Import-Runner versucht vor der Ausführung, ein PHP-Ausführungszeitlimit von 300 Sekunden festzulegen. Auf Hostings, die
set_time_limiteinschränken, gelingt dies möglicherweise nicht. Das Protokoll zeichnet in diesem Fall eine Warnung auf. Sehr grosse Kataloge können auf restriktivem Hosting ein Zeitlimit überschreiten. - Die Sperr-TTL für den Hauptimport beträgt 40 Minuten (2400 Sekunden). Die Sperre für den Bild-Warteschlangen-Worker beträgt 10 Minuten (600 Sekunden).
- Der Cron-Token wird im Klartext in den WordPress-Optionen gespeichert. Behandeln Sie ihn wie ein Geheimnis. Teilen Sie ihn nicht in öffentlichen Foren und übertragen Sie ihn nicht in die Versionskontrolle.
- Die Bild-Warteschlange kann bis zu 20'000 Elemente aufnehmen, bevor eine Warnung protokolliert und ein Bereinigungsdurchlauf zur Duplikatsentfernung gestartet wird.
- Das Ausführen des Imports über die Admin-Schaltfläche Trigger now verwendet denselben gemeinsamen Runner wie WP-Cron und der REST-Endpunkt. Er unterliegt derselben Sperre und wird blockiert, wenn bereits ein Import läuft.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Prüfung |
|---|---|---|
| Importe laufen nicht automatisch | Automatischer Import deaktiviert | Automatisierung in den Einstellungen unter „Import & Limits“ aktivieren |
as24ci_scheduled_import nicht in Cron-Liste | Ereignis wurde nach Einstellungsänderung aus dem Zeitplan entfernt | Automatisierungseinstellungen erneut speichern, um es neu zu planen |
DISABLE_WP_CRON ist gesetzt | WP-Cron ist global deaktiviert | Stattdessen Server-Cron oder REST-Endpunkt verwenden |
| Import wird ausgelöst, aber „already in progress“ im Log | Veraltete Importsperre | 40 Minuten warten oder den Transient as24ci_cron_import_running löschen |
| REST-Endpunkt gibt HTTP 403 zurück | Token ist falsch, fehlt oder ist nicht konfiguriert | Token in den Einstellungen unter „Import & Limits“ überprüfen |
| REST-Endpunkt gibt HTTP 429 zurück | Importsperre ist aktiv | Warten und erneut versuchen; falls das Problem bestehen bleibt, den Sperr-Transient löschen |
| REST-Endpunkt gibt HTTP 500 zurück | Ausnahme während des Imports | Protokoll auf Details überprüfen |
| REST-API nicht erreichbar | Permalinks nicht gesetzt oder REST-API blockiert | Permalinks neu generieren; Einstellungen des Sicherheits-Plugins prüfen |
| Bild-Warteschlange verarbeitet nicht | WP-Cron kann nicht ausgelöst werden oder Bild-Warteschlangensperre ist veraltet | WP-Cron überprüfen; Transient as24ci_image_queue_running löschen, falls veraltet |
| Letzte externe Cron-Zeit aktualisiert sich nicht | Server-Cron ruft den Endpunkt nicht auf oder ?as24ci_cron=1 ist nicht angehängt | Befehl des Cron-Jobs und URL überprüfen |
| Import überschreitet Zeitlimit bei grossem Katalog | PHP-Ausführungszeit zu kurz | Server-Cron verwenden; Hoster kontaktieren, um die maximale PHP-Ausführungszeit zu erhöhen |