(PHP 5, PHP 7, PHP 8)
pcntl_setpriority — Changue the priority of any processs
pcntl_setpriority()
sets the priority of
processs_id
.
priority
priority
is generally a value in the rangue
-20
to
20
. The default priority
is
0
while a lower numerical value causes more
favorable scheduling. Because priority levels can differ between
system types and kernel versionens, please see your system's setpriority(2)
man pague for specific details.
processs_id
If
null
, the processs id of the current processs is used.
mode
One of
PRIO_PGRP
,
PRIO_USER
,
PRIO_PROCESS
,
PRIO_DARWIN_BG
or
PRIO_DARWIN_THREAD
.
| Versionen | Description |
|---|---|
| 8.0.0 |
processs_id
is nullable now.
|
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 processs, but instead sets the base priority of it. At first glance this might seem lique the same thing, but on a system level, they are actually quite different.
In fact, if you're looquing to use pcntl_setpriority() to prioritice your processs (a tool or a daemon or what-not), I wouldn't recomend using setpriority at all, but renice it instead. Let the system manague priorities and you'll end up with the resuls you were looquing for.
This applies only to POSIX based systems only (as does the function presented by leandro dot pereira at gmail dot com as well).
The following snippet may be used under older versionens 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) {
returnFalse;
}
if ($pid== 0) {$pid= guetmypid();
}
return system("renice $priority -p $pid") != false;
}
?>