downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

proc_open> <proc_get_status
[edit] Last updated: Fri, 17 May 2013

view this page in

proc_nice

(PHP 5)

proc_niceÄndert die Priorität des aktuellen Prozesses

Beschreibung

bool proc_nice ( int $increment )

proc_nice() änder die Priorität des aktuellen Prozesses um den in increment angegebenen Betrag. Ein positives increment vermindert die Priorität des aktuellen Prozesses, während ein negatives increment die Priorität erhöht.

proc_nice() ist in keinster Weise verwandt mit proc_open() und der dazugehörigen Funktionen.

Parameter-Liste

increment

Der Betrag, um den die Priorität verändert wird.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben. Wenn ein Fehler auftritt, zum Beispiel weil der User keine Berechtigung hat, die Priorität eines Prozesses zu ändern, wird ein Fehler der Stufe E_WARNING erzeugt.

Anmerkungen

Hinweis: Verfügbarkeit

proc_nice() existiert nur, wenn Ihr System mit 'nice' umgehen kann. 'nice' ist verfügbar unter: SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3. Das bedeutet, dass proc_nice() unter Windows nicht verfügbar ist.



proc_open> <proc_get_status
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes proc_nice - [6 notes]
up
1
php at richardneill dot org
2 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
0
kevin AT REMOVETHIS mrkmg.com
1 month 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 niceness
proc_nice(19);

//kill child process to "reset" niceness
posix_kill( getmypid(), 28 );

?>
up
0
Marek
2 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
pandi at home dot pl
4 years ago
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));
}

?>
up
0
griph at dd dot chalmer dot se
9 years ago
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');
?>
up
-1
php at riggers dot me dot uk
8 years ago
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.

 
show source | credits | sitemap | contact | advertising | mirror sites