2011-05-04 15 views
8

Actualmente estoy usando una secuencia de comandos en nodeJS para supervisar un directorio (y sus subdirectorios) y realizar alguna función una vez que se ha colocado un archivo allí. En realidad, esto sería un FTP, donde los usuarios cargan archivos, se procesan y luego se eliminan.Directorio de supervisión para cambios: memoria alta potencial

Obviamente, ya estoy viendo una gran cantidad en el uso de la CPU con la secuencia de comandos, ya que atraviesa los directorios, esperando que los archivos sean visibles. Pero lo que me preocupa es que cuanto más tiempo se ejecuta la secuencia de comandos, mayor es el uso de la memoria (simplemente sigue aumentando exponencialmente). ¿Hay algunas formas livianas de monitorear un directorio para ver los cambios?

Gracias!

EDIT: actualmente estoy usando watch-tree que es genial, pero todavía tiene el problema de la memoria creciente.

+3

Lo que su identificación es una pérdida de memoria en código de terceros. Intenta usar 'supervisor', es menos probable que tenga una pérdida de memoria. (¡Está hecho por Isaacs!) – Raynos

+0

¡Parece una gran alternativa! ¿Cómo puedo monitorear un directorio (y subdirectorios) cuando se agregan los archivos? Nodo-supervisor parece que solo mira un archivo de cambios (server.js por ejemplo) – crawf

+0

también mira cualquier subdirectorio para todos los archivos '.js'. Si intentas 'supervisor --help' debería tener una opción' -js' para un control más detallado. – Raynos

Respuesta

3

Parece que quieres un envoltorio alrededor de FAM o inotify. Tal vez algo como node-inotify-plusplus funcionaría para usted.

+0

Gracias @rjp, desde entonces he estado investigando algo así. Mi problema principal con cualquier solución es el nivel de memoria que tomará el proceso de monitoreo, ya que este sistema necesita estar en línea durante 8 horas a la vez. Es inotify una buena manera de ir? Por lo que he investigado, es parte del sistema operativo, por lo que sería altamente eficiente en la memoria ... – crawf

+1

Los usuarios de FreeBSD/OS X necesitarán usar una solución de kqueue ya que inotify/epoll no existe en esas plataformas. – jarjar

+0

¿Se puede usar node-inotify-plusplus para imprimir los nombres de los archivos a medida que se modifican los archivos en el directorio? –

Cuestiones relacionadas