Signatur
Beschreibung
pcntl_getqos_class() liefert die aktuell zugewiesene QoS-Klasse (Quality of Service) des ausführenden Threads als Integer-Wert zurück. QoS-Klassen sind ein Konzept aus macOS/Darwin, das es ermöglicht, die Priorität und den Energieverbrauch von Threads zu steuern.
Die zurückgegebenen Werte entsprechen den vordefinierten QoS-Klassen-Konstanten, z. B. PCNTL_QOS_CLASS_USER_INTERACTIVE, PCNTL_QOS_CLASS_USER_INITIATED, PCNTL_QOS_CLASS_DEFAULT, PCNTL_QOS_CLASS_UTILITY und PCNTL_QOS_CLASS_BACKGROUND. Diese Klassen ordnen dem Thread eine Systempriorität zu, die beeinflusst, wie stark das Betriebssystem diesem Thread Rechenzeit und Energie zuweist.
Diese Funktion ist primär auf macOS-Systemen verfügbar und sinnvoll, wenn man ressourcenintensive Hintergrundprozesse (z. B. via pcntl_fork()) mit einer niedrigen Priorität versehen möchte, um den Energieverbrauch zu senken oder interaktive Prozesse nicht zu beeinträchtigen.
Beachte, dass diese Funktion nur auf Plattformen verfügbar ist, die QoS-Klassen unterstützen (in der Regel Darwin/macOS). Auf nicht unterstützten Plattformen steht sie nicht zur Verfügung.
Rückgabewert
PCNTL_QOS_CLASS_*-Konstanten.Beispiele
Aktuelle QoS-Klasse abfragen und ausgeben
<?php
// QoS-Klasse des aktuellen Threads abfragen
$qosClass = pcntl_getqos_class();
switch ($qosClass) {
case PCNTL_QOS_CLASS_USER_INTERACTIVE:
echo "QoS-Klasse: User Interactive (höchste Priorität)\n";
break;
case PCNTL_QOS_CLASS_USER_INITIATED:
echo "QoS-Klasse: User Initiated\n";
break;
case PCNTL_QOS_CLASS_DEFAULT:
echo "QoS-Klasse: Default\n";
break;
case PCNTL_QOS_CLASS_UTILITY:
echo "QoS-Klasse: Utility\n";
break;
case PCNTL_QOS_CLASS_BACKGROUND:
echo "QoS-Klasse: Background (niedrigste Priorität)\n";
break;
default:
echo "Unbekannte QoS-Klasse: " . $qosClass . "\n";
}
QoS-Klasse im Fork-Prozess prüfen
<?php
$pid = pcntl_fork();
if ($pid === -1) {
die("Fork fehlgeschlagen\n");
} elseif ($pid === 0) {
// Kind-Prozess: QoS-Klasse abfragen
$qos = pcntl_getqos_class();
echo "Kind-Prozess QoS-Klasse: " . $qos . "\n";
exit(0);
} else {
// Eltern-Prozess
$qos = pcntl_getqos_class();
echo "Eltern-Prozess QoS-Klasse: " . $qos . "\n";
pcntl_waitpid($pid, $status);
}
// Wichtig · Fallstricke
Plattformabhängigkeit: Diese Funktion ist ausschließlich auf macOS/Darwin-Systemen verfügbar, da QoS-Klassen ein Apple-spezifisches Konzept sind. Auf Linux oder Windows steht die Funktion nicht zur Verfügung. Überprüfe mit function_exists('pcntl_getqos_class'), ob die Funktion verfügbar ist, bevor du sie einsetzt.
Die Integer-Werte der QoS-Klassen-Konstanten entsprechen den in Apple's libdispatch definierten Klassen und können sich je nach macOS-Version unterscheiden. Verwende daher stets die Konstanten (PCNTL_QOS_CLASS_*) anstelle von hartkodierten Zahlenwerten.