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.
proc_nice
(PHP 5)
proc_nice — Modificar la prioridad del proceso actual
Descripción
proc_nice() modifica la prioridad del proceso actual por la cantidad especificada en incremento . Un incremento positivo reducirá la prioridad del proceso actual, mientras que un incremento negativo la incrementará.
proc_nice() no está relacionada con proc_open() y sus funciones asociadas en ninguna forma.
Lista de parámetros
- incremento
-
El valor de incremento del cambio de prioridad.
Valores retornados
Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo. Si ocurre un error, como que el usuario carezca de permisos para modificar la prioridad, un error de nivel E_WARNING es generado también.
Notes
Note: Disponibilidad proc_nice() existirá únicamente si su sistema tiene soporte para 'nice'. 'nice' está definido de acuerdo a los estándares: SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3. Esto quiere decir que proc_nice() no está disponible en Windows.
proc_nice
13-Aug-2004 01:20
10-Nov-2003 11: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');
?>
