Start · Sprachen · PHP · Referenz · posix_sysconf

posix_sysconf

Funktion

Liefert Laufzeitkonfigurationswerte des Betriebssystems über die POSIX-<code>sysconf()</code>-Schnittstelle.

seit PHP 8.1.0 Kategorie: misc

Signatur

posix_sysconf(int $conf_id): int|false

Beschreibung

posix_sysconf() ruft systemweite Konfigurationsinformationen zur Laufzeit ab, die vom Betriebssystem über die POSIX-Schnittstelle sysconf() bereitgestellt werden. Typische Anwendungsfälle sind das Ermitteln der maximalen Anzahl offener Dateideskriptoren, der Größe einer Speicherseite oder der Anzahl verfügbarer Prozessoren.

Der Funktion wird eine Konstante übergeben, die dem gewünschten Systemparameter entspricht. Diese Konstanten beginnen mit dem Präfix POSIX_SC_, z. B. POSIX_SC_CLK_TCK, POSIX_SC_OPEN_MAX oder POSIX_SC_NPROCESSORS_ONLN. Die verfügbaren Konstanten hängen vom Betriebssystem ab.

Die Funktion ist besonders nützlich, wenn PHP-Anwendungen plattformspezifische Ressourcenlimits oder Systemeigenschaften kennen müssen, etwa bei der Implementierung von Prozessmanagern, bei der Überwachung von Systemen oder beim Schreiben portabler CLI-Tools.

Achtung: Diese Funktion ist nur auf POSIX-kompatiblen Systemen (Linux, macOS, BSD) verfügbar. Unter Windows steht sie nicht zur Verfügung. Die Funktion wurde mit PHP 8.1.0 eingeführt.

Parameter

Name Typ Default Beschreibung
$conf_id Pflicht int Eine der POSIX_SC_*-Konstanten, die den gewünschten Systemparameter identifiziert, z. B. POSIX_SC_OPEN_MAX für die maximale Anzahl offener Dateien oder POSIX_SC_PAGESIZE für die Größe einer Speicherseite.

Rückgabewert

Typ
int|false
Beschreibung
Gibt den Wert des angefragten Systemparameters als Integer zurück. Bei einem Fehler oder wenn der Parameter nicht unterstützt wird, wird false zurückgegeben. Im Fehlerfall kann posix_get_last_error() für weitere Informationen verwendet werden.

Beispiele

Maximale Anzahl offener Dateideskriptoren ermitteln

<?php
// Maximale Anzahl gleichzeitig offener Dateien für den Prozess abfragen
$maxOpenFiles = posix_sysconf(POSIX_SC_OPEN_MAX);

if ($maxOpenFiles === false) {
    echo 'Fehler: ' . posix_strerror(posix_get_last_error()) . PHP_EOL;
} else {
    echo 'Maximale offene Dateien: ' . $maxOpenFiles . PHP_EOL;
}
Maximale offene Dateien: 1024

Speicherseitengröße und Anzahl der Prozessoren abfragen

<?php
// Größe einer Speicherseite in Bytes
$pageSize = posix_sysconf(POSIX_SC_PAGESIZE);
echo 'Speicherseitengröße: ' . $pageSize . ' Bytes' . PHP_EOL;

// Anzahl der logischen Prozessoren (online)
if (defined('POSIX_SC_NPROCESSORS_ONLN')) {
    $cpus = posix_sysconf(POSIX_SC_NPROCESSORS_ONLN);
    echo 'Verfügbare Prozessoren: ' . $cpus . PHP_EOL;
} else {
    echo 'POSIX_SC_NPROCESSORS_ONLN wird auf diesem System nicht unterstützt.' . PHP_EOL;
}

// Takt-Ticks pro Sekunde
$clkTck = posix_sysconf(POSIX_SC_CLK_TCK);
echo 'Takt-Ticks pro Sekunde: ' . $clkTck . PHP_EOL;
Speicherseitengröße: 4096 Bytes Verfügbare Prozessoren: 8 Takt-Ticks pro Sekunde: 100

// Wichtig · Fallstricke

Plattformverfügbarkeit: Die Funktion ist ausschließlich auf POSIX-kompatiblen Systemen verfügbar (Linux, macOS, FreeBSD usw.). Unter Windows existiert sie nicht. Vor dem Einsatz sollte daher function_exists('posix_sysconf') geprüft werden.

Verfügbare Konstanten: Nicht alle POSIX_SC_*-Konstanten sind auf jedem System definiert oder werden unterstützt. Prüfe mit defined('POSIX_SC_...'), ob eine Konstante vorhanden ist, bevor du sie verwendest. Eine false-Rückgabe kann sowohl einen Fehler als auch einen nicht verfügbaren Parameter bedeuten.

Neu in PHP 8.1.0: Vor PHP 8.1 war diese Funktion nicht in der PHP-Standarderweiterung vorhanden. Für ältere PHP-Versionen musste auf Shell-Befehle wie getconf oder C-Erweiterungen zurückgegriffen werden.