Foros del Web » Programando para Internet » PHP »

Como saber cuando se crea nuevo archivo en una carpeta FTP?

Estas en el tema de Como saber cuando se crea nuevo archivo en una carpeta FTP? en el foro de PHP en Foros del Web. Hola. Estoy compartiendo un FTP con una empresa de software que me cuelga en la carpeta FTP ficheros XML de forma periódica. Para no tener ...
  #1 (permalink)  
Antiguo 15/06/2011, 09:53
 
Fecha de Ingreso: mayo-2010
Mensajes: 53
Antigüedad: 13 años, 11 meses
Puntos: 6
Como saber cuando se crea nuevo archivo en una carpeta FTP?

Hola. Estoy compartiendo un FTP con una empresa de software que me cuelga en la carpeta FTP ficheros XML de forma periódica.
Para no tener que entrar todos los días y mirar si han subido algo nuevo, ¿hay algún script en php para saber si se ha creado un fichero nuevo en esa carpeta?. Luego le diría mediante ese mismo script que si hay nuevo archivo, me mande un email avisándome.

Si alguien sabe como detectar la creación de un nuevo fichero en una carpeta con php le estaré muy agradecido si me dice como hacerlo.

Muchas gracias.

Saludos,
  #2 (permalink)  
Antiguo 15/06/2011, 10:36
Avatar de saseisa  
Fecha de Ingreso: agosto-2006
Mensajes: 329
Antigüedad: 17 años, 8 meses
Puntos: 9
Respuesta: Como saber cuando se crea nuevo archivo en una carpeta FTP?

hola joselito36 mira como yo lo hago tengo mi servidor con linux utilizo esto hago el conteo de cuantos archivos tengo en la carpeta que necesito

Código:
<?php 
$cuantos=shell_exec('ls -1 /tucarpeta | wc -l');
echo $cuantos;
?>
de ahi utilizo un archivo de texto donde tengo el numero de cuantos archivos
Código:
<?php
 $archivo = "registro.txt";
 $abre = fopen($archivo, "r");
 $totalv = fread($abre, filesize($archivo));

 fclose($abre);
?>
de ahi io agregaria 1 if para el envio del correo que necesitas, espero te pueda servir
  #3 (permalink)  
Antiguo 15/06/2011, 10:46
 
Fecha de Ingreso: mayo-2010
Mensajes: 53
Antigüedad: 13 años, 11 meses
Puntos: 6
Respuesta: Como saber cuando se crea nuevo archivo en una carpeta FTP?

Muchas gracias.

Lo voy a probar ahora mismo.

Un abrazo,
  #4 (permalink)  
Antiguo 15/06/2011, 11:07
 
Fecha de Ingreso: mayo-2010
Mensajes: 53
Antigüedad: 13 años, 11 meses
Puntos: 6
Respuesta: Como saber cuando se crea nuevo archivo en una carpeta FTP?

Muchas gracias pero no me sirve ya que por cuestiones de seguridad la función PHP shell_exec () se ha bloqueado en los servidores compartidos, y yo lo tengo en uno compartido.

Gracias de todos modos. A alguien se le ocurre alguna otra idea?
  #5 (permalink)  
Antiguo 15/06/2011, 11:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como saber cuando se crea nuevo archivo en una carpeta FTP?

Puedes usar las funciones de FTP de PHP, y tener un proceso automatizado con CRON que lea cada X tiempo y verifique si hay o no archivos nuevos.
  #6 (permalink)  
Antiguo 15/06/2011, 14:53
 
Fecha de Ingreso: mayo-2010
Mensajes: 53
Antigüedad: 13 años, 11 meses
Puntos: 6
Respuesta: Como saber cuando se crea nuevo archivo en una carpeta FTP?

Gracias GatorV .

Al final lo he resuelto gracias a la ayuda e ideas que me habéis dado ambos. Muchas gracias.

Pongo aquí el script por si a alguien le parece interesante.

Código PHP:
Ver original
  1. <?php
  2. //hay que poner los datos del FTP
  3. $ftp_server='ftp.loquesea.com';
  4. $ftp_user_name='[email protected]';
  5. $ftp_user_pass='tu_password_del_ftp';
  6.  
  7. // establecer una conexión básica
  8. $conn_id = ftp_connect($ftp_server);
  9. // iniciar sesión con nombre de usuario y contraseña
  10. $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  11. // obtener la lista de archivos de /
  12. $buff = ftp_rawlist($conn_id, '/');
  13. // cerrar la conexión ftp
  14. ftp_close($conn_id);
  15. //Cuento el nº de archivos y lo guardo en la variable $result
  16. $result = count($buff);
  17. echo 'Hay '.$result.' archivos en la carpeta<br/><br/>';
  18.  
  19. //ahora leo un archivo que he creado previamente con el nº de archivos que hay en el ftp. O sea creo un archivo de texto llamado como yo quiera y le asigno la variable $archivo. En ese archivo de texto lo único que pondré será un número correspondiente al total de archivos que hay en la carpeta. Por ejemplo 23
  20. $archivo = './miruta/cuenta_archivos.txt';
  21.  
  22. $contenido_archivo = file_get_contents($archivo);
  23. echo 'Y anteriormente había '.$contenido_archivo.' archivos.<br/><br/>';
  24.  
  25. //ahora comparo los resultados
  26. if ($result > $contenido_archivo) {  //si es mayor el número de archivos del que hay en el archivo de texto que he creado, entonces manda email
  27. //mando email avisando que hay cambios
  28. echo 'Como hay uno o más archivos nuevos mando email avisando de ello';
  29.  
  30. //ahora grabo el nuevo nº resultante de archivos en el archivo de texto para que actualice el numero en el archivo.
  31. $fp = fopen($archivo, 'w');
  32. fwrite($fp, $result);
  33. fclose($fp);
  34. }
  35. else {
  36. echo 'No hay ningún archivo nuevo en la carpeta y entonces no tengo que hacer nada';
  37. }
  38. //fin del script
  39. ?>

Última edición por Joselito36; 15/06/2011 a las 14:59
  #7 (permalink)  
Antiguo 15/06/2011, 15:16
 
Fecha de Ingreso: mayo-2010
Mensajes: 53
Antigüedad: 13 años, 11 meses
Puntos: 6
Respuesta: Como saber cuando se crea nuevo archivo en una carpeta FTP?

Por cierto. No lo he mencionado. Lo ideal es hacer un chron job de este script para que se ejecute varias veces al día y así estar avisado constantemente de cualquier posible nuevo archivo.

Espero que os sirva a alguien porque mi trabajito me ha costado. jeh jeh.

Etiquetas: crea, ftp, carpetas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:16.