Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Warteschlangen mit expqueue

Anwendungsarbeit mit der Job-Warteschlange expqueue im Hintergrund ausführen - einschalten, Jobs mit Optionen einreihen, Handler mit Wiederholungen und Checkpoints schreiben, Worker per Cron oder systemd und die Seiten…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/queues-with-expqueue.md

On this page

This page is a translation. Read the English original

Warteschlangen mit expqueue

Diese Seite richtet sich an Anwendungsentwickler, deren Anwendung Arbeit hat, die nicht in einer Web-Anfrage stattfinden darf: Aufrufe langsamer Dienste, Massenaktualisierungen, Versand, KI-Anfragen. expqueue ist eine Job-Warteschlange in der Datenbank: Erzeuger reihen einen Job mit einem einzigen Aufruf ein; Worker führen ihn auf der Kommandozeile aus (expqueue). Die vollständige Dokumentation steht in extension/expqueue/doc/ (api.md, scheduling.md, workers-cron-systemd.md).

Die Job-Warteschlange in der Administration: wartende, laufende, erledigte und fehlgeschlagene Jobs je Warteschlange
Die Job-Warteschlange in der Administration: wartende, laufende, erledigte und fehlgeschlagene Jobs je Warteschlange

Inhalt

  1. Einschalten
  2. Einen Job einreihen
  3. Einen Handler schreiben
  4. Worker
  5. Beobachten und steuern
  6. Regeln für Handler

Einschalten

  1. Aktivieren Sie die Erweiterung global: [ExtensionSettings] ActiveExtensions[]=expqueue in settings/override/site.ini.append.php.

  2. Legen Sie die Tabellen an (idempotent): ./console ext:expqueue:install-schema.

  3. Generieren Sie die Autoloads neu und liefern Sie aus.

  4. Ein Worker jede Minute:

    * * * * * cd /path/to/installation && php runcronjobs.php -q expqueue >> var/log/cronjob-expqueue.log 2>&1
  5. Prüfen: ./console ext:expqueue:enqueue expqueue.noop, ./console ext:expqueue:work --once, ./console ext:expqueue:status.

Einen Job einreihen

$job = expQueue::enqueue( 'expdemo.archive', array( 'object_id' => $objectID ), array(
    'idempotency_key' => "archive:$objectID:$version",
    'priority' => 50 ) );

Zu den Optionen gehören class (Prioritätsklasse), priority, group, idempotency_key, resource (ein Schlüssel für Nebenläufigkeit), not_before, max_attempts, timeout, depends_on, user_id. Die Nutzdaten werden als JSON gespeichert und in der Administration angezeigt: Legen Sie niemals ein Geheimnis hinein; übergeben Sie IDs und lassen Sie den Handler Zugangsdaten aus den Einstellungen lesen.

Einen Handler schreiben

Registrieren Sie den Typ:

# extension/expdemo/settings/expqueue.ini.append.php
[JobType_expdemo.archive]
Handler=expDemoArchiveHandler
MaxAttempts=4
Timeout=300
Description=Sends one published object to the archive

Implementieren Sie expQueueHandler::run( expQueueJob $job, expQueueContext $context ) oder erweitern Sie expQueueHandlerBase (das validate() beim Einreihen und describe() für die Administration ergänzt). run() gibt nichts oder ein Array zurück (erledigt) oder ein expQueueResult: done(), retry( $message, $retryAfter ), fail(), defer(), hold(), cancelled(). Andere Exceptions gelten als wiederholbar.

class expDemoArchiveHandler extends expQueueHandlerBase
{
    public function run( expQueueJob $job, expQueueContext $context )
    {
        $payload = $context->payload();
        $object = eZContentObject::fetch( (int)$payload['object_id'] );
        if ( !$object )
            return expQueueResult::fail( 'The object is gone' );
        expDemoArchiveClient::send( $object );
        return array( 'sent' => true );
    }
}

Worker

Worker laufen per Cron (runcronjobs.php expqueue) oder für kürzere Wartezeiten als systemd-Dienst (./console ext:expqueue:service install), niemals innerhalb einer Web-Anfrage. Wenn Ihre Job-Typen nur in einigen Siteaccesses aktiv sind, geben Sie dem Worker -s <siteaccess> mit.

Beobachten und steuern

Setup > Job-Warteschlange zeigt das Dashboard, die Jobs, Gruppen und Steuerelemente; die Richtlinien sind expqueue/view und expqueue/manage. Jobs lassen sich abbrechen, wiederholen und je Warteschlange, Klasse, Ressource oder Gruppe pausieren.

Regeln für Handler

  • Idempotent: Ein Job kann nach einem Absturz oder einer Wiederholung erneut laufen; verwenden Sie den Checkpoint für Schritte, die Geld kosten.
  • Keine Datenbanktransaktion um einen langsamen Aufruf.
  • Bei langer Arbeit mindestens alle halbe Timeout-Dauer progress() oder heartbeat() aufrufen.
  • Der Job läuft als der Benutzer, der ihn eingereiht hat; prüfen Sie die Rechte als dieser Benutzer.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x