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));
}
?>
proc_nice
(PHP 5)
proc_nice — Change la priorité d'exécution du processus courant
Description
proc_nice() modifie la priorité du processus courant par le paramètre spécifié increment . Un paramètre increment positif atténuera la priorité du processus courant, tandis qu'une valeur négative increment augmentera la priorité.
proc_nice() n'est pas lié à proc_open() et ses fonctions associées d'aucune façon.
Liste de paramètres
- increment
-
La valeur de l'incrément de la priorité.
Valeurs de retour
Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Si une erreur survient, par exemple, si l'utilisateur qui tente de changer la priorité d'un processus n'a pas suffisamment de droit pour le faire, une erreur de niveau E_WARNING est générée et FALSE est retourné.
Notes
Note: Disponibilité
proc_nice() n'est disponible que sur les systèmes qui disposent de capacités NICE. NICE est compatible avec : SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3. Par exemple, proc_nice() n'est pas disponible sous Windows.
proc_nice
25-Nov-2008 01:22
12-Aug-2004 11: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.
10-Nov-2003 10: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');
?>
