In PHP ist Proc_nice () eine Funktion, mit der die aktuelle Prozesspriorität geändert wird. Es kann nützlich sein, wenn es notwendig ist, die Menge der Systemressourcenbelegung zu regulieren, z. B. bei Hintergrundaufgaben, Stapelskripten oder ressourcenintensiven Vorgängen, wodurch die Wettbewerbsfähigkeit des aktuellen Skripts an der CPU verringert wird, wodurch die Gesamtsystemreaktion verbessert wird.
Ein häufiges Problem mit der Funktion proc_nice () besteht jedoch darin, dass sie keinen Fehler oder eine Ausnahme auslöst, sondern einen booleschen Wert zurückgibt. Dies bedeutet, dass Sie den Rückgabewert explizit überprüfen müssen, um zu bestätigen, dass die "Priorität" des Prozesses (tatsächlich "vorrangige Voreingenommenheit") erfolgreich festgelegt wurde.
Proc_nice () empfängt einen Inkrement von Integer -Typen $ inkrement , was den Offset -Wert basierend auf der aktuellen Priorität angibt. Je größer der Wert ist, desto niedriger ist die Priorität (d. H. "Schöner"); Je kleiner der Wert (oder sogar negativ), desto höher ist die Priorität (d. H. "dringlicher").
<?php
$success = proc_nice(10);
if ($success) {
echo "Die Prozesspriorität wurde erfolgreich festgelegt。\n";
} else {
echo "Die Prozesspriorität nicht festgelegt,Es kann sein, dass es nicht genügend Berechtigungen gibt。\n";
}
?>
Proc_nice () gibt False zurück, um anzuzeigen, dass die Einstellung fehlgeschlagen ist. Die Hauptgründe für das Scheitern sind normalerweise die folgenden:
Unzureichende Berechtigungen <br> In Linux -Systemen kann nur der Root -Benutzer den guten Wert senken (d. H. Priorität erhöhen, z. B. negative Werte). Normale Benutzer können es nur aufdrehen (um "freundlicher zu werden").
Plattformbeschränkungen <br> Bei einigen nicht-ungen-ähnlichen Systemen (wie Windows) kann Proc_nice () möglicherweise nicht unterstützt werden oder sich inkonsistent verhalten.
PHP verfügt nicht über eine integrierte Funktion, die den netten Wert des aktuellen Prozesses direkt erhalten kann, kann jedoch durch Aufrufen von Shell_exec () implementiert werden, um Systembefehle auszuführen:
<?php
$currentNice = (int) shell_exec('ps -o ni= -p ' . getmypid());
echo "aktuell nice Der Wert ist:$currentNice\n";
?>
Dieser Code fragt den netten Wert des aktuellen PHP -Prozesses über den PS -Befehl ab, wobei GetMypid () die PID des aktuellen Prozesses erhält.
? HINWEIS: Diese Methode hängt von Systembefehlen ab und ist möglicherweise nicht in deaktivierten Umgebungen von Deaktiviert oder Open_Basedir verfügbar.
Für die robustere Verwendung von Proc_nice () wird empfohlen, Fehlerprotokollierung und Berechtigungsprüfung zu verwenden:
<?php
$desiredNice = -5;
if (!function_exists('proc_nice')) {
error_log("proc_nice Funktion nicht verfügbar,Bitte bestätigen Sie PHP Umgebungskonfiguration。");
exit("proc_nice Nicht verfügbar\n");
}
if (!posix_geteuid()) {
echo "aktuell是 root Benutzer,Sie können versuchen, eine höhere Priorität festzulegen。\n";
} else {
echo "aktuell非 root Benutzer,Negative Werte können nicht festgelegt werden nice Wert。\n";
}
if (proc_nice($desiredNice)) {
echo "Stellen Sie die Priorität fest, um erfolgreich auszugleichen $desiredNice。\n";
} else {
echo "Einstellung fehlgeschlagen,Es kann sein, dass es nicht genügend Berechtigungen oder Systembeschränkungen gibt。\n";
error_log("proc_nice scheitern,Versuchen Sie, sich zu setzen $desiredNice Abgelehnt。");
}
?>
Im obigen Code werden die Erkennung der Funktionsverfügbarkeit, die Beurteilung der aktuellen Benutzeridentität und eine angemessene Protokollierung hinzugefügt, um den Problemstandort zu erleichtern.
proc_nice () ist eine nützliche, aber leicht übersehene Funktion. Da sein Verhalten und seine Berechtigungen eng miteinander verbunden sind, ist es sehr notwendig, den Rückgabewert korrekt zu behandeln und die Protokollierung zu protokollieren. Bei Verwendung in einer automatisierten Umgebung oder einem automatisierten Dienst wird empfohlen, Tools wie https://gitbox.net/tools/php-nice-check vor der Bereitstellung zu verwenden, um sicherzustellen, dass die Prioritätskontrolle wie erwartet funktioniert.
Durch die ordnungsgemäße Verwendung von Proc_nice () kann Ihr PHP -Programm mit dem System sanfter koexistieren.