proc_nice

(PHP 5, PHP 7, PHP 8)

proc_niceMuda a prioridade do processo atual

Descrição

proc_nice(int $priority): bool

proc_nice() muda a prioridade do processo atual para o valor especificado em priority. Um priority positivo irá diminuir a prioridade do processo atual, enquanto que um priority negativo irá aumentar a prioridade.

proc_nice() não é relacionada com proc_open() e suas funções associadas de qualquer maneira.

Parâmetros

priority

O novo valor de prioridade, pode ser diferente dependendo da plataforma.

No Unix, um valor baixo, como -20 significa alta prioridade enquanto que valores positivos têm uma prioridade menor.

Para Windows, o argumento priority tem o seguinte significado:

Classe de prioridade Valores possíveis
Alta prioridade priority < -9
Prioridade acima do normal priority < -4
Prioridade normal priority < 5 & priority > -5
Prioridade abaixo do normal priority > 5
Prioridade de inativo priority > 9

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha. Se ocorrer um erro, como o usuário não ter permissões suficientes para mudar a prioridade, um erro de nível E_WARNING também é gerado.

Registro de Alterações

Versão Descrição
7.2.0 Esta função agora está disponível no Windows.

Exemplos

Exemplo #1 Usando proc_nice() para definir a prioridade do processo para alta

<?php
// A mais alta prioridade
proc_nice(-20);
?>

Notas

Nota: Disponibilidade

proc_nice() irá existir apenas se o sistema tiver capacidades para 'nice', que é 'nice' conforme: SVr4, SVID EXT, AT&T, X/OPEN e BSD 4.3.

Nota: Somente para Windows

proc_nice() irá alterar a prioridade do processo atual, mesmo que o PHP tenha sido compilado com 'thread safety'.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 5 notes

up
7
kevin AT REMOVETHIS mrkmg.com
12 years ago
On a Linux system, running apache2 as a non-privileged user you can not increase the niceness of the process after decreasing it. Also, you can not use the apache_child_ terminate either. I found the following does work though:<?php//decrease nicenessproc_nice(19);//kill child process to "reset" nicenessposix_kill( getmypid(), 28 );?>
up
3
php at richardneill dot org
15 years ago
If a process is reniced, then all its children inherit that niceness. So a PHP script can call proc_nice on itself, then invoke system(), and the command executed via system() will also be niced.Also worth making a note of ionice. There's no PHP function for this, but it's important. A nice'd program will happily try to chew up all i/o bandwidth with very little CPU usage, it can therefore make the entire computer non-responsive despite the programmer's intention.  Use "ionice -c3"  or see "man ionice"
up
2
Marek
14 years ago
Regarding ionice - on linux the impact of the ionice -c3 class is similar to that of nice, because the CPU "niceness" is taken into account when calculating the io niceness.
up
0
phil_php at zieaon dot com
4 years ago
It is important to note that this is a relative change. I didn't read the description properly and couldn't figure out why setting proc_nice(0) didn't take the forked children back to 0!For example if you run:<?phpproc_nice(-5);proc_nice(0); // will have no effectproc_nice(5); // will take the niceness back to 0 ?>In PHP CLI under Debian (and probably many other Linux flavours) you can read the 'niceness' from the proc filesystem.  (There may be a PHP command that gives this info but there doesn't seem to be a link to it on this page.)E.g<?php$Current_Niceness_Value = intval(explode(" ",file_get_contents("/proc/".getmypid()."/stat"))[18]);// Note: Older versions of Linux return an unsigned integer which has to be converted to a signed integer. $Current_Niceness_Value = unpack("l",pack("L",intval(explode(" ",file_get_contents("/proc/".getmypid()."/stat"))[18])))[1];?>
up
0
pandi at home dot pl
16 years ago
Simple function for check process nice, by default returns nice of current process:<?phppublic static function getProcessNice ($pid = null) {    if (!$pid) {        $pid = getmypid ();    }            $res = `ps -p $pid -o "%p %n"`;            preg_match ('/^\s*\w+\s+\w+\s*(\d+)\s+(\d+)/m', $res, $matches);            return array ('pid' => (isset ($matches[1]) ? $matches[1] : null), 'nice' => (isset ($matches[2]) ? $matches[2] : null));}?>
To Top