Hola a todos!! Soy nuevo en el foro. Mi nombre es Jaim.-
Estoy realizando un servidor de dns con php corriendo en windows.
Una de las finalidades que tiene el script es saber que aplicacion hizo la solicitud de dns, para permitirla (devolverle la ip) o bloquearla.
Para saber cual es la aplicacion, utilizo el puerto de cliente, ya enviado en la consulta dns, luego usando el comando shell exec hago un netstat por cada solicitud (netstat -ano | find "PORT"), me devuelve como salida entre mas datos, EL PID DE LA APLICACION.
Hasta aca todo barbaro y la aplicacion es totalmente funcional.
EL PROBLEMA:
- SI hago un "shell exec netstat" por cada solicitud, el programa netstat (y por ende find) se ejecuta y cuando termina devuelve la salida en una variable y se cierra, esto produce mucho consumo de cpu!!!, Ya que cuando se entra a una web, se hacen muchas consultas de dns (Porque siempre hay mas dominios)
El abrir y cerrar del programa, creo que es el que genera el consumo. SI fuera posible tener el netstat abierto y hacerle consultas sin cerrar y volver a abrir, creo que el resultado seria diferente.
PREGUNTAS:
- Hay alguna forma o funcion o clase en php de realizar esto sin utilizar netstat ni nada externo? He buscado en la Web oficial y no encontre nada.
- Si no se puede la primer pregunta, entonces, no hay una dll que permita realizar esta funcion? Creo que seria lo ideal en este caso.
- Alguien conoce una forma de utilizar netstat de forma que, el programa quede abierto y responda las consultas sin abrir y cerrarse?
Al margen de estas preguntas, no se me ocurre otra forma que pueda existir para solucionar mi problema, si tienen una idea, o otra forma de encarar el problema, desde ya gracias por tomarse el tiempo de leer mi consulta.