Aktueller Standort: Startseite> Neueste Artikel> Wie setze ich die CPU -Zeitscheibe Priorität eines Prozesses mit Proc_nice in PHP fest?

Wie setze ich die CPU -Zeitscheibe Priorität eines Prozesses mit Proc_nice in PHP fest?

gitbox 2025-05-29

Was ist proc_nice () ?

Proc_nice () ist eine Systemaufrufschnittstelle, die von PHP bereitgestellt wird und mit der der "schöne Wert" des aktuellen Prozesses geändert wird. Der sogenannte "nette Wert" ist ein Indikator für die Messungsprozesseprioritäten in Unix-ähnlichen Systemen. Je kleiner der Wert ist, desto höher ist die Priorität; Je größer der Wert ist, desto niedriger die Priorität. Der Bereich liegt im Allgemeinen zwischen -20 und 19 und der Standard ist 0.

 <?php
$originalNice = proc_nice(0); // Fragen Sie den Strom an nice Wert
echo "Aktueller Prozess nice Wert为: $originalNice\n";

// Priorität verbessern(Reduzieren nice Wert)
if (proc_nice(-10)) {
    echo "Erfolgreich aktualisierte Prozessprioritäten。\n";
} else {
    echo "Die Prozesspriorität nicht verbessert(Kann erforderlich sein root Berechtigungen)。\n";
}
?>

Dinge zu beachten

  1. Berechtigungsgrenze : Die Reduzierung des guten Wertes (Priorität erhöhen) erfordert normalerweise höhere Berechtigungen wie Wurzel. Normale Benutzer können den netten Wert nur standardmäßig erhöhen (d. H. Die Priorität verringern).

  2. Temporärer Effekt : Die Verwendung von Proc_nice () wirkt sich nur auf den aktuellen Skriptprozess aus und ändert die Systemeinstellungen nicht dauerhaft.

  3. Plattformunterschied : Windows-Systeme unterstützen nicht proc_nice () , und Anrufe auf dieser Plattform schließen fehl.

Typische Nutzungsszenarien

Angenommen, Sie schreiben ein Image-Komprimierungs-Batch-Verarbeitungstool, und der Benutzer lädt Hunderte von Bildern gleichzeitig hoch. Der Verarbeitungsprozess ist möglicherweise sehr zeitaufwändig. Sie können proc_nice () verwenden, um die Ausführungspriorität des Skripts zu erhöhen, damit es so viel CPU wie möglich verwenden und die Gesamtverarbeitungszeit verkürzen kann.

 <?php
proc_nice(-5); // Versuchen Sie, die Prozessprioritäten geringfügig zu erhöhen

$images = glob('/path/to/uploads/*.jpg');

foreach ($images as $image) {
    $compressed = compressImage($image);
    file_put_contents('/path/to/compressed/' . basename($image), $compressed);
}

function compressImage($file) {
    // Probenkompressionslogik(Pseudocode)
    $img = imagecreatefromjpeg($file);
    ob_start();
    imagejpeg($img, null, 60);
    $data = ob_get_clean();
    imagedestroy($img);
    return $data;
}
?>

Wenn Sie mit einer Task-Warteschlange kompatibel sind (z. B. Redis-basierte Nachrichtenwarteschlange), können Sie auch Aufgaben in die CPU priorisieren, indem Sie eine höhere Priorität für die Verarbeitung von Skripten festlegen.

Effektiver im CLI -Modus

Da die meisten Webserver für PHP (z. B. 30 Sekunden) und relativ begrenzte Betriebsumgebungen ausführlichen Grenzen haben, wird empfohlen, beispielsweise Proc_nice () im Befehlszeilenmodus (CLI) zu verwenden:

 php /var/www/gitbox.net/scripts/image_compress.php

Auf diese Weise können Sie nicht nur den schönen Wert frei anpassen, sondern auch Aufgaben über Crontab, Systemd usw. planen.


Erweitert: Wird in Kombination mit netter Befehl verwendet

Wenn Sie Proc_nice () in PHP nicht anrufen oder in einer eingeschränkten Hostumgebung ausführen können, können Sie den netten Befehl des Betriebssystems verwenden, um Ihr PHP -Skript extern zu starten:

 nice -n -10 php /var/www/gitbox.net/scripts/heavy_task.php

Dies ermöglicht auch die Prioritätskontrolle, die für die Bereitstellung in Produktionsumgebungen geeignet ist.