ConFoo 2025

pcntl_setpriority

(PHP 5, PHP 7, PHP 8)

pcntl_setpriorityChange la priorité d'un processus

Description

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

pcntl_setpriority() change la priorité de process_id à priority.

Liste de paramètres

priority

priority est généralement une valeur allant de -20 à 20. La priorité par défaut est 0 tandis qu'une valeur numérique plus petite favorise une meilleure planification. Comme les niveaux de priorité changent entre les types de systèmes et les versions de kernel, lisez la page de manuel getpriority(2) de votre système pour des détails spécifiques.

process_id

Si null, l'identifiant du processus courant est utilisé.

mode

Une constante parmi PRIO_PGRP, PRIO_USER, PRIO_PROCESS, PRIO_DARWIN_BG ou PRIO_DARWIN_THREAD.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

Version Description
8.0.0 process_id est désormais nullable.

Voir aussi

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