Signatur
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
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;
}
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;
// 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.