Signatur
Beschreibung
mysqli_embedded_server_end() beendet eine zuvor gestartete Instanz des eingebetteten MySQL-Servers (libmysqld). Die Funktion gibt alle internen Ressourcen frei, die dem eingebetteten Server zugeordnet sind, und stellt sicher, dass der Server sauber heruntergefahren wird.
Der eingebettete MySQL-Server ermöglicht es, MySQL direkt in eine PHP-Anwendung einzubetten, ohne einen separaten MySQL-Serverprozess zu benötigen. Dies war vor allem in Szenarien nützlich, in denen eine vollständig in sich geschlossene Anwendung ohne externe Datenbankabhängigkeiten benötigt wurde – etwa bei Desktop-Anwendungen oder bestimmten eingebetteten Systemen.
Wichtig: Diese Funktion ist seit PHP 7.4 als deprecated markiert und wurde in PHP 8.0 vollständig entfernt, da die zugrundeliegende libmysqld-Bibliothek von MySQL selbst nicht mehr unterstützt wird. Für moderne PHP-Anwendungen sollte stattdessen ein regulärer MySQL-Server oder eine Alternative wie SQLite verwendet werden.
Die Funktion sollte am Ende des Skripts oder kurz vor dem Programmende aufgerufen werden, nachdem alle Datenbankoperationen abgeschlossen sind, um Speicherlecks und Datenverluste zu vermeiden.
Rückgabewert
Beispiele
Eingebetteten MySQL-Server starten und sauber beenden
<?php
// Eingebetteten Server starten (PHP 5.x / 7.x, nicht in PHP 8+)
$db_args = [
'--datadir=/var/lib/mysql-embedded',
'--key_buffer_size=32M'
];
if (mysqli_embedded_server_start(true, $db_args)) {
// Verbindung zur eingebetteten Datenbank aufbauen
$link = mysqli_connect();
if ($link) {
// Datenbankoperationen durchführen
$result = mysqli_query($link, 'SELECT VERSION() AS version');
if ($result) {
$row = mysqli_fetch_assoc($result);
echo 'MySQL-Version: ' . $row['version'] . PHP_EOL;
mysqli_free_result($result);
}
mysqli_close($link);
}
// Eingebetteten Server sauber beenden
mysqli_embedded_server_end();
echo 'Eingebetteter Server wurde beendet.' . PHP_EOL;
} else {
echo 'Fehler: Eingebetteter Server konnte nicht gestartet werden.' . PHP_EOL;
}
Nutzung mit register_shutdown_function zur Absicherung
<?php
// Sicherheitshalber Server-Ende beim Skript-Shutdown registrieren
register_shutdown_function(function () {
// Stellt sicher, dass der eingebettete Server auch bei Fehlern beendet wird
mysqli_embedded_server_end();
echo 'Shutdown: Eingebetteter Server wurde beendet.' . PHP_EOL;
});
if (mysqli_embedded_server_start(false, ['--datadir=/tmp/mysql-embed'])) {
$link = mysqli_connect();
// ... Datenbankoperationen ...
mysqli_close($link);
// mysqli_embedded_server_end() wird automatisch beim Shutdown aufgerufen
} else {
trigger_error('Eingebetteter Server konnte nicht initialisiert werden.', E_USER_ERROR);
}
// Wichtig · Fallstricke
Deprecation-Hinweis: mysqli_embedded_server_end() wurde in PHP 7.4 als veraltet markiert (deprecated) und ist seit PHP 8.0 nicht mehr verfügbar. Die Verwendung dieser Funktion in neuem Code wird ausdrücklich nicht empfohlen.
Die Funktion setzt voraus, dass PHP mit Unterstützung für den eingebetteten MySQL-Server kompiliert wurde (--with-mysqli=embedded). In Standard-PHP-Distributionen ist diese Unterstützung in der Regel nicht enthalten. Ein Aufruf ohne zuvor erfolgreich gestarteten eingebetteten Server kann zu undefiniertem Verhalten führen.
Für moderne Anwendungen empfiehlt es sich, auf reguläre Datenbankverbindungen über MySQLi oder PDO umzusteigen. Als eingebettete Alternative bietet sich SQLite über die PDO_SQLite-Erweiterung an.