Signatur
Beschreibung
get_resources() liefert eine Liste aller im aktuellen PHP-Prozess noch offenen (aktiven) Ressourcen. Ressourcen (resource) sind spezielle PHP-Werte, die externe Objekte wie Datei-Handles, Datenbankverbindungen oder Stream-Handles repräsentieren.
Die Funktion eignet sich hervorragend zur Diagnose und zum Debugging: Man kann damit prüfen, ob im Verlauf eines Skripts Ressourcen offen geblieben sind, die bereits geschlossen hätten sein sollen (z. B. vergessene fclose()-Aufrufe oder nicht geschlossene Datenbankverbindungen).
Wird der optionale Parameter $type angegeben, werden nur Ressourcen des entsprechenden Typs zurückgegeben. Den Typ einer Ressource ermittelt man mit get_resource_type(). Ohne Parameter werden alle aktiven Ressourcen zurückgegeben.
Das zurückgegebene Array ist assoziativ: Die Schlüssel entsprechen der internen Ressourcen-ID (Integer), die Werte sind die Ressourcen selbst. Hinweis: Ab PHP 8.0 wurden viele klassische Ressourcen durch echte Objekte ersetzt (z. B. GdImage), weshalb die Zahl der über get_resources() sichtbaren Handles zurückgegangen ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $type | string|null | null | Optionaler Ressourcentyp als String, z. B. 'stream', 'mysql link' oder 'curl'. Wird null übergeben oder der Parameter weggelassen, werden alle aktiven Ressourcen zurückgegeben. |
Rückgabewert
Beispiele
Alle offenen Ressourcen auflisten
<?php
// Eine Datei öffnen
$fh = fopen('php://temp', 'r+');
// Alle aktiven Ressourcen ermitteln
$resources = get_resources();
foreach ($resources as $id => $resource) {
echo 'ID: ' . $id . ' — Typ: ' . get_resource_type($resource) . PHP_EOL;
}
fclose($fh);
Nur Ressourcen eines bestimmten Typs (Streams) abrufen
<?php
$fh1 = fopen('php://temp', 'r+');
$fh2 = fopen('php://memory', 'r+');
// Nur Stream-Ressourcen abrufen
$streams = get_resources('stream');
echo 'Anzahl offener Streams: ' . count($streams) . PHP_EOL;
foreach ($streams as $id => $stream) {
echo 'Stream-Ressource ID: ' . $id . PHP_EOL;
}
fclose($fh1);
fclose($fh2);
// Nach dem Schließen sollten die Handles verschwunden sein
$streams_after = get_resources('stream');
echo 'Streams nach fclose: ' . count($streams_after) . PHP_EOL;
// Wichtig · Fallstricke
PHP 8.0+: Viele ehemals als Ressource implementierte Handles wurden in echte PHP-Objekte umgewandelt (z. B. GdImage, OpenSSLCertificate, CurlHandle). Diese erscheinen nicht mehr in der Ausgabe von get_resources(). Die Funktion ist daher für Diagnose-Zwecke in modernem PHP-Code weniger umfassend als in älteren Versionen.
Die Funktion ist primär für Debugging und Profiling gedacht und sollte nicht in produktivem Anwendungscode zur Steuerung der Programmlogik verwendet werden. Für Unit-Tests kann sie nützlich sein, um Ressourcen-Leaks zu erkennen.