Start · Sprachen · PHP · Referenz · parallel\bootstrap

parallel\bootstrap

Funktion

Registriert eine Bootstrap-Datei, die in jeder parallelen Runtime automatisch vor der Ausführung geladen wird.

seit PHP 1.0.0 Kategorie: misc

Signatur

parallel\bootstrap(string $file): void

Beschreibung

parallel\bootstrap() legt eine PHP-Datei fest, die in allen nachfolgend erstellten parallel\Runtime-Instanzen als erstes eingebunden wird. Dies entspricht dem Konzept eines Autoloaders oder einer gemeinsamen Initialisierungsdatei, die sicherstellt, dass Klassen, Funktionen und Konstanten in jedem Worker-Thread verfügbar sind.

Da parallele Runtimes (parallel\Runtime) vollständig isolierte PHP-Interpreter-Instanzen sind, stehen dort keine Symbole aus dem Haupt-Thread zur Verfügung. parallel\bootstrap() löst dieses Problem, indem es z. B. den Composer-Autoloader (vendor/autoload.php) oder eine eigene Initialisierungsdatei in jeden Thread injiziert.

Der Aufruf muss vor dem Erstellen von parallel\Runtime-Objekten erfolgen, da bereits laufende Runtimes die Einstellung nicht mehr berücksichtigen. Üblicherweise wird parallel\bootstrap() einmalig am Anfang des Skripts aufgerufen.

Die angegebene Datei wird in der jeweiligen Runtime einmalig mittels require eingebunden. Fehler beim Laden (z. B. nicht vorhandene Datei) führen zu einer parallel\Runtime\Error\Bootstrap-Exception.

Parameter

Name Typ Default Beschreibung
$file Pflicht string Absoluter oder relativer Pfad zur PHP-Datei, die in jeder neuen parallel\Runtime vor der eigentlichen Task-Ausführung per require eingebunden wird. Typischerweise der Composer-Autoloader oder eine eigene Bootstrap-Datei.

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück. Bei einem Fehler (z. B. Datei nicht gefunden oder bereits laufende Runtimes vorhanden) wird eine parallel\Runtime\Error\Bootstrap-Exception geworfen.

Beispiele

Composer-Autoloader als Bootstrap für parallele Runtimes

<?php
use parallel\{Runtime, bootstrap};

// Bootstrap einmalig registrieren — muss vor Runtime-Erstellung erfolgen
bootstrap(__DIR__ . '/vendor/autoload.php');

$runtime = new Runtime();

$future = $runtime->run(function () {
    // Dank Bootstrap ist z. B. die Klasse App\Calculator verfügbar
    $calc = new App\Calculator();
    return $calc->add(21, 21);
});

echo $future->value(); // 42
42

Eigene Initialisierungsdatei mit Konstanten und Hilfsfunktionen

<?php
// bootstrap-init.php
// Diese Datei wird in jeder Runtime geladen:
define('APP_ENV', 'production');

function formatResult(int $n): string {
    return "Ergebnis: {$n}";
}

// ---

// main.php
use parallel\{Runtime, bootstrap};

bootstrap(__DIR__ . '/bootstrap-init.php');

$runtime = new Runtime();

$future = $runtime->run(function () {
    // APP_ENV und formatResult() sind hier verfügbar
    return formatResult(100);
});

echo $future->value();
Ergebnis: 100

// Wichtig · Fallstricke

Reihenfolge beachten: parallel\bootstrap() muss aufgerufen werden, bevor die erste parallel\Runtime-Instanz erzeugt wird. Ein späterer Aufruf löst eine Exception aus.

Nur einmal aufrufbar: Mehrfache Aufrufe von parallel\bootstrap() innerhalb desselben Skripts überschreiben die vorherige Einstellung nicht mehr, sobald Runtimes aktiv sind.

Erweiterungsvoraussetzung: Die parallel-Erweiterung ist nicht im PHP-Standardlieferumfang enthalten und muss separat installiert werden (PECL: pecl install parallel). Sie erfordert PHP 8.0+ (ZTS – Thread Safe Build).

Kein Shared State: Selbst mit Bootstrap teilen Runtimes keinen Speicherbereich. Variablen aus dem Haupt-Thread sind nicht automatisch verfügbar; Daten müssen über Closures (Parameter/Rückgabewert) oder parallel\Channel übergeben werden.