|
A veces es interesante saber
si tienes un proceso activo en la maquina para generar la web de una forma
u otra...
ej: Avisar a los usuarios que estás haciendo backup, o que estás
conectado al irc o tienes el messanger encendido...
Esto se puede hacer en 2 sistemas (que yo sepa) y usando tuberias...
En windowsXP hay un bonito comando llamado "tasklist", en linux
"ps"
Nota: Este ejemplo será orientado a windowsXP, ya que en estos
momentos no dispongo de una maquina linux en la cual probar el ejemplo,
de todas formas, no varia mas que el comando y sus parametros...
Paso 1 Nos curramos la tuberia: (llamando a tasklist con unos cuantos
parametros extra para luego poder cogerlo desde php mas facilmente)
Miraros el manual en: Menú Inicio => Ayuda y soporte tecnico
$fp=popen("tasklist /fo CSV /nh","r");
el bucle para leer linea a linea la salida del programa
while (!feof($fp))
{
$lin=fgets($fp,255);
echo $lin."<br>";
}
Cerramos la tuberia
pclose($fp);
Si ejecutamos ese codigo, tendremos algo parecido a esto:
"System
Idle Process","0","Console","0","20
KB"
"System","4","Console","0","80
KB"
"smss.exe","404","Console","0","84
KB"
"csrss.exe","460","Console","0","1.828
KB"
"winlogon.exe","484","Console","0","1.812
KB"
"services.exe","528","Console","0","1.140
KB"
....
bien, ahora queda
"secuestrar" los datos para poderlos idenitificar desde php
y asi ver si un proceso está activo, vamos con un ejemplo:
Supongamos que yo quiero poner en mi web si tengo o no el SETI@home activo
en mi maquina:
$seti = 0;
$fp=popen("tasklist /fo CSV /nh","r");
while (!feof($fp))
{
$lin=fgets($fp,255);
// Verificador de SETI@home
if (strtok($lin,",") == "\"SETI@home.exe\""
) { $seti = 1; }
}
pclose($fp);
if ( $seti == 1 ) { echo "El SETI@home está funcionando y
buscando hombrecillos verdes!"; }
else { echo "No tenemos el SETI@home activo en esta maquina";
}
en linux es exactamente igual, salvo cambiando un poco el if que identifica
el proceso y los parametros de PS :)
Ale! suerte! espero que os sirva!
|