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

CLI-Skripte und ezexec für Integrationen

Integrationscode auf dem Exponential-Server von der Kommandozeile ausführen - schnelle Skripte mit bin/php/ezexec.php, richtige Befehle mit eZScript in Ihrer Erweiterung, wie die Konsole sie findet, Siteaccess und…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/integrators/cli-scripts-and-ezexec.md

On this page

This page is a translation. Read the English original

CLI-Skripte und ezexec für Integrationen

Diese Seite ist für Integrationsentwickler, deren Code auf dem Exponential-Server läuft: Importe, Exporte, Reparaturen, einmalige Migrationen. Auf der Kommandozeile steht die ganze PHP-API zur Verfügung, es gibt kein Anfrage-Timeout, und der Lauf lässt sich planen, protokollieren und überwachen. Es gibt zwei Wege: bin/php/ezexec.php für ein schnelles Skript und einen Befehl Ihrer Erweiterung für alles, was Sie behalten.

Inhalt

  1. ezexec: ein schnelles Skript mit geladenem Kernel
  2. Ein Befehl in Ihrer Erweiterung
  3. Siteaccess, Benutzer und Umgebung
  4. Exit-Codes, Probeläufe und Ausgabe
  5. Mitgelieferte Befehle, die Integrationen helfen

ezexec: ein schnelles Skript mit geladenem Kernel

php bin/php/ezexec.php <script.php> erledigt den Bootstrap (Einstellungen, Datenbank, Erweiterungen, Module) und bindet dann Ihre Datei ein. Das Skript findet $cli (ein eZCLI) und $script (ein eZScript) einsatzbereit vor:

<?php
// var/tmp/count_imported.php: how many objects carry our remote id prefix?
$db = eZDB::instance();
$rows = $db->arrayQuery( "SELECT COUNT(*) AS n FROM ezcontentobject WHERE remote_id LIKE 'erp-product-%'" );
$cli->output( 'Imported products: ' . (int)$rows[0]['n'] );
php bin/php/ezexec.php var/tmp/count_imported.php -s <siteaccess>

Gibt die eingebundene Datei etwas anderes als 1 zurück (eine einfache Datei gibt 1 zurück), ist der Exit-Code 1. Verwenden Sie ezexec zum Nachsehen und für einmalige Korrekturen; alles, was zweimal läuft, gehört als Befehl in Ihre Erweiterung.

Ein Befehl in Ihrer Erweiterung

Die Konsole (bin/php/console) findet Skripte zur Laufzeit: Aus extension/<ext>/bin/php/<name>.php wird der Befehl ext:<ext>:<name>, mit der einzeiligen Beschreibung aus dem Tag @description des ersten Docblocks.

#!/usr/bin/env php
<?php
/**
 * @description Import products from the ERP export file (--file, --dry-run)
 */
require_once 'autoload.php';

$cli = eZCLI::instance();
$script = eZScript::instance( array( 'description' => "Import products from the ERP export file.\n",
                                     'use-session' => false,
                                     'use-modules' => true,
                                     'use-extensions' => true ) );
$script->startup();
$options = $script->getOptions( '[file:][dry-run]', '',
                                array( 'file' => 'The export file to read',
                                       'dry-run' => 'Report what would change, change nothing' ) );
$script->initialize();

if ( !$options['file'] || !is_readable( $options['file'] ) )
{
    $cli->error( 'Give a readable --file' );
    $script->shutdown( 1 );
}

$importer = new myIntegrationProductImport( $cli, (bool)$options['dry-run'] );
$ok = $importer->run( $options['file'] );

$script->shutdown( $ok ? 0 : 1 );

Speichern Sie es als extension/myintegration/bin/php/importproducts.php, machen Sie es ausführbar und führen Sie es aus:

php bin/php/console ext:myintegration:importproducts --file=var/import/products.csv --dry-run -s <siteaccess>
php extension/myintegration/bin/php/importproducts.php --help

Halten Sie die Arbeit in einer Klasse (oben myIntegrationProductImport), damit derselbe Code aus dem Befehl, einem Cronjob-Teil und einem Test läuft. Der Rumpf eines solchen Importers steht unter Ein Importskript schreiben.

Siteaccess, Benutzer und Umgebung

ThemaWas zu tun ist
SiteaccessÜbergeben Sie -s <siteaccess>; es gelten die Einstellungen dieses Siteaccess und seiner Access-Erweiterungen. Ohne die Option wird DefaultAccess verwendet
BenutzerEin Skript läuft als anonymer Benutzer, bis Sie mit eZUser::setCurrentlyLoggedInUser( $user, $user->attribute( 'contentobject_id' ) ) einen anderen Benutzer zum aktuellen machen; verwenden Sie ein Dienstkonto (wie)
Benutzer des BetriebssystemsFühren Sie es als der Benutzer aus, unter dem der Webserver läuft; als root geschriebene Dateien sind für die Website danach womöglich nicht beschreibbar. Als root verweigern Skripte die Ausführung, sofern nicht --allow-root-user angegeben ist
Zugangsdaten des anderen SystemsLesen Sie sie aus der Umgebung oder aus der INI Ihrer Erweiterung in settings/override, nie von der Kommandozeile, wo sie in der Shell-Historie und der Prozessliste landen
Debug-Ausgabe-d gibt am Ende die Debug-Ausgabe aus; --logfiles schreibt Protokolldateien

Exit-Codes, Probeläufe und Ausgabe

  • Beenden Sie mit 0 bei Erfolg und mit einem anderen Wert bei Fehlern, damit Cron, Deployments und Überwachung reagieren können.
  • Bieten Sie für jedes Skript, das Daten ändert, --dry-run an, und sagen Sie, was sich ändern würde.
  • Beachten Sie -q: $cli->output() gibt damit nichts aus; verwenden Sie für Fehler $cli->error(), das immer ausgibt.
  • Zeigen Sie bei langen Schleifen den Fortschritt mit $script->resetIteration( $total ) und $script->iterate( $cli, $status, $text ).
  • Geben Sie nie Passwörter, Schlüssel oder personenbezogene Daten aus; maskieren Sie sie.

Mitgelieferte Befehle, die Integrationen helfen

BefehlVerwendung in einer Integration
php bin/php/ezcsvimport.php --class=<class> <node> <file>Objekte einer Klasse aus CSV importieren (--creator, --storage-dir)
php bin/php/ezcsvexport.php --storage-dir=<dir> <node>Einen Teilbaum in eine CSV-Datei pro Klasse exportieren
php bin/php/updatesearchindex.phpDen Suchindex nach einer Massenänderung neu aufbauen
php bin/php/ezcache.php --clear-id=<ids>Caches nach einer Massenänderung leeren (welche)
php bin/php/expcontentjob.php listInhaltsjobs (große Löschungen, Kopien, Verschiebungen) ausführen, auflisten, fortsetzen und abbrechen
php bin/php/ezsubtreeremove.php --applyTeilbäume über die Knoten-ID entfernen, in den Papierkorb, außer mit --ignore-trash
php bin/php/console exp:logsDie Protokolldateien durchsuchen und verfolgen
php bin/php/console exp:audit tailDas Audit-Protokoll lesen
php bin/php/maintenance.php on|off|statusDie Website für ein Migrationsfenster vom Netz nehmen

php bin/php/console list zeigt jeden Befehl der Installation.

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