proc_open> <proc_get_status
Last updated: Fri, 16 Jul 2010

proc_nice

(PHP 5)

proc_niceMuda a prioridade do processo atual

Descrição

bool proc_nice ( int $increment )

proc_nice() muda a prioridade do processo atual pela quantidade especificada em increment. Um increment positivo irá diminuir a prioridade do processo atual, enquanto um increment negativo irá aumentar a prioridade.

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

Parâmetros

increment

O valor do incremento da mudança de prioridade.

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em falhas. 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.

Notas

Nota: Disponibilidade
proc_nice() irá existir apenas se o seu sistema tiver capacidades 'nice'. 'nice' conforma com: SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3. Isto significa que proc_nice() não esta disponível no windows.



proc_open> <proc_get_status
Last updated: Fri, 16 Jul 2010
 
User Contributed Notes
proc_nice
php at richardneill dot org
24-Jun-2010 04:14
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"
pandi at home dot pl
25-Nov-2008 11:22
Simple function for check process nice, by default returns nice of current process:

<?php

public 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));
}

?>
php at riggers dot me dot uk
12-Aug-2004 08:20
Just an addition to the previous note re: exec('renice...'). The exit_func() will not set the priority back to normal (0) (at least on linux), unless the user that the webserver is running as is a super user (bad idea). You can decrease the priority of the running task, but not increase it again. See man page for renice.

To prevent subsequent requests running at the lower priority I called apache_child_terminate() on shutdown.
griph at dd dot chalmer dot se
10-Nov-2003 08:34
If you don't have PHP5 and needs to nice your process this works good.

<?php

function proc_nice($priority) {
 
exec("renice +$priority ".getmypid());
}

//You also need a shutdown function if you don't want to leave your http deamons with a modified priority
function exit_func(){
 
// Restore priority
 
proc_nice(0);
}

register_shutdown_function('exit_func');
?>

proc_open> <proc_get_status
Last updated: Fri, 16 Jul 2010