Signatur
Beschreibung
phpdbg_end_oplog() beendet eine zuvor mit phpdbg_start_oplog() gestartete Opcode-Aufzeichnung (Oplog) und gibt alle seit dem Start aufgezeichneten Opcodes zurück. Diese Funktion steht ausschließlich in der PHPDBG-Umgebung zur Verfügung, dem interaktiven PHP-Debugger, der seit PHP 5.6 als integrierter Bestandteil von PHP ausgeliefert wird.
Das zurückgegebene Array enthält detaillierte Informationen über die ausgeführten Opcodes, einschließlich der Quelldatei, der Zeilennummer und des Opcode-Typs. Dies erlaubt Entwicklern eine genaue Analyse des ausgeführten PHP-Bytecodes, was für Performance-Profiling, Debugging und das Verständnis des PHP-Execution-Workflows nützlich ist.
Die Funktion wird typischerweise im Zusammenspiel mit phpdbg_start_oplog() verwendet: Zuerst wird die Aufzeichnung gestartet, dann der zu untersuchende Code ausgeführt, und schließlich wird phpdbg_end_oplog() aufgerufen, um die Aufzeichnung zu beenden und die gesammelten Daten abzurufen. Die gesammelten Daten können anschließend analysiert, gespeichert oder ausgegeben werden.
Hinweis: Diese Funktion ist nur innerhalb des PHPDBG-SAPIs verfügbar und hat in anderen Umgebungen (z. B. CLI, FPM, Apache) keinen Effekt bzw. ist nicht definiert.
Rückgabewert
phpdbg_start_oplog() enthält. Jeder Eintrag enthält Angaben wie Dateiname, Zeilennummer und ausgeführten Opcode-Typ.Beispiele
Einfache Oplog-Aufzeichnung eines Code-Blocks
<?php
// Nur innerhalb von PHPDBG verfügbar
if (function_exists('phpdbg_start_oplog')) {
// Oplog-Aufzeichnung starten
phpdbg_start_oplog();
// Zu analysierender Code-Block
$result = array_map(function($x) {
return $x * 2;
}, range(1, 5));
// Oplog-Aufzeichnung beenden und Daten abrufen
$oplog = phpdbg_end_oplog();
// Aufgezeichnete Opcodes ausgeben
print_r($oplog);
} else {
echo 'phpdbg_end_oplog() ist nur in der PHPDBG-Umgebung verfügbar.' . PHP_EOL;
}
Oplog für Performance-Analyse nutzen
<?php
// Nur innerhalb von PHPDBG verfügbar
if (function_exists('phpdbg_start_oplog')) {
phpdbg_start_oplog();
// Funktion, deren Opcodes analysiert werden sollen
function berechneSumme(array $zahlen): int {
return array_sum($zahlen);
}
$summe = berechneSumme([1, 2, 3, 4, 5]);
$oplog = phpdbg_end_oplog();
echo 'Summe: ' . $summe . PHP_EOL;
echo 'Anzahl aufgezeichneter Opcodes: ' . count($oplog) . PHP_EOL;
// Opcodes je Datei gruppieren
foreach ($oplog as $datei => $opcodes) {
echo 'Datei: ' . $datei . PHP_EOL;
foreach ($opcodes as $zeile => $opcode) {
echo ' Zeile ' . $zeile . ': ' . $opcode . PHP_EOL;
}
}
}
// Wichtig · Fallstricke
Umgebungsvoraussetzung: phpdbg_end_oplog() ist ausschließlich im PHPDBG-SAPI verfügbar. In anderen Ausführungsumgebungen wie CLI, FPM oder Webserver-Modulen ist die Funktion nicht definiert. Prüfe vor dem Aufruf stets mit function_exists('phpdbg_end_oplog'), ob die Funktion verfügbar ist.
Reihenfolge beachten: phpdbg_end_oplog() muss immer nach einem vorangegangenen phpdbg_start_oplog()-Aufruf verwendet werden. Ein Aufruf ohne vorherige Aufzeichnung kann zu unerwartetem Verhalten führen.
Nicht für Produktivbetrieb: Diese Funktion dient ausschließlich Debugging- und Analysezwecken und sollte nicht in produktivem Code eingesetzt werden.