phpday 2025 - Call For Papers

pcntl_setpriority

(PHP 5, PHP 7, PHP 8)

pcntl_setpriorityÄndert die Priorität eines beliebigen Prozesses

Beschreibung

pcntl_setpriority(int $priority, ?int $process_id = null, int $mode = PRIO_PROCESS): bool

pcntl_setpriority() setzt die Priorität von process_id.

Parameter-Liste

priority

priority ist gewöhnlich ein Wert im Bereich zwischen -20 und 20. Die vorgegebene Priorität ist 0, während ein kleinerer numerischer Wert günstigeres Scheduling hervorruft. Weil die Prioritätsstufen sich zwischen Systemtypen und Kernelversionen unterscheiden können, ist die setpriority(2)-Manpage des Systems bezüglich spezifischer Details zu konsultieren.

process_id

Falls null, wird die PID des aktuellen Prozesses verwendet.

mode

Entweder PRIO_PGRP, PRIO_USER, PRIO_PROCESS, PRIO_DARWIN_BG oder PRIO_DARWIN_THREAD.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.0.0 process_id ist jetzt nullable (akzeptiert den null-Wert).

Siehe auch

  • pcntl_getpriority() - Ermittelt die Priorität eines beliebigen Prozesses
  • pcntl_setpriority()

add a note

User Contributed Notes 2 notes

up
2
t dot stobbe at blackdogdev dot com
18 years ago
As for the renice function by leandro dot pereira at gmail dot com, this isn't true. pcntl_setpriority() doesn't set the nice level of a process, but instead sets the base priority of it. At first glance this might seem like the same thing, but on a system level, they are actually quite different.

In fact, if you're looking to use pcntl_setpriority() to prioritize your process (a tool or a daemon or what-not), I wouldn't recomend using setpriority at all, but renice it instead. Let the system manage priorities and you'll end up with the results you were looking for.

This applies only to POSIX based systems only (as does the function presented by leandro dot pereira at gmail dot com as well).
up
-1
leandro dot pereira at gmail dot com
19 years ago
The following snippet may be used under older versions of PHP to provide similar functionality. Tested only under Linux.

<?php
function _pcntl_setpriority($priority, $pid = 0)
{
$priority = (int)$priority;
$pid = (int)$pid;

if (
$priority > 20 && $priority < -20) {
return
False;
}
if (
$pid == 0) {
$pid = getmypid();
}

return
system("renice $priority -p $pid") != false;
}

?>
To Top