Foros del Web » Programando para Internet » PHP »

Manejo de archivos!

Estas en el tema de Manejo de archivos! en el foro de PHP en Foros del Web. Buenas Tardes amigos. Soy nuevo en el foro y este es mi primer post. Les explico mi situaciòn, para saber si pueden ayudarme. Estoy diseñando ...
  #1 (permalink)  
Antiguo 28/09/2009, 14:12
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Exclamación Manejo de archivos!

Buenas Tardes amigos. Soy nuevo en el foro y este es mi primer post. Les explico mi situaciòn, para saber si pueden ayudarme.

Estoy diseñando una aplicaciòn y uno de los mòdulos debe encargarse de buscar archivos de texto plano en una direcciòn especifica y constante, leerlos e introducir los datos en una base de datos. Es posible que para algunos sea algo sencillo, pero yo soy nuevo en esto y bueno, me gustarìa saber como hacerlo. Estoy trabajando a 3 capas, o al menos simulàndola con servicios de la clase nusoap. En un servidor tengo la vista, en el otro los servicios y en el otro la base de datos. El mòdulo que les comentè, debe buscar en unas carpetas alojadas en otros servidores y leer cada uno de los archivos que allì se encuentren. Es decir, si hay 10 carpetas y cada una contiene 10 archivos, debe leer los 10 archivos de texto plano de cada una de las carpetas y ademàs ejecutarse cada cierto tiempo. Eso es lo que no sè còmo hacer. Puedo buscar por internet como leer el archivo de texto plano y desglosar las lìneas para luego guardar en una variable e introducir en la base de datos (postgre), pero no sè què hacer para que se ejecute cada cierto tiempo y ademàs no lea sòlo un archivo, sino todos los archivos que estèn en cada una de esas carpetas que ademàs, son archivos que llegan nuevos cada cierto tiempo, por lo cuàl poseen nombres distintos. Es decir, no puedo decirle que lea el archivo: "ejemplo.txt", porque los archivos siempre estàn cambiando de nombre. De verdad se me hace muy complicado, espero que alguno de ustedes pueda ayudarme y espero haber sabido explicarme.

Muchas gracias de antemano, saludos amigos foristas!
  #2 (permalink)  
Antiguo 28/09/2009, 14:31
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: Manejo de archivos!

Para ejecutar el código lo que haces es usar un cronjob que ejecute tu script cada X tiempo que tu definas.

Respecto a lo de leer los txt, es algo complicado pero si tienes permisos para hacer un browse del directorio los podrias leer parseando el resultado, si no tienes permisos (es decir no puedes listar el directorio) entonces no vas a poder realizar lo que pides ya que sin saber como se llama el archivo no lo puedes leer.

Saludos.
  #3 (permalink)  
Antiguo 29/09/2009, 08:09
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Manejo de archivos!

Muchas gracias por tu pronta respuesta. Disculpen una vez màs mis pocos conocimientos del tema. Sì tengo permisos, pero no sè còmo hacer lo de parsear los resultados. Encontrè en internet un codigo que se pasea por los archivos de una carpeta (al final del mensaje lo anexo) y me genera un xml. Aunque no necesito un xml, pienso que podrìa servirme la mecànica de como se pasea por los archivos de una carpeta. La cosa es que como les comentè, mi còdigo debe pasearse por varias carpetas y a su vez, cada una de esas carpetas contiene alrededor de 6 subcarpetas y es dentro de estas subcarpetas donde estàn los archivos que debo leer (estas carpetas estàn alojadas en un 4to servidor) y tokenizar para luego almacenar en variables y enviar a mi base de datos. Intentarè ver si puedo adaptarlo para que recorra todas las carpetas (quizà para algunos es tarea sencilla, per soy nuevo hehehe). Primera vez que escucho de los cronjobs, en estos momentos me encuentro investigando acerca de ellos, muchas gracias por el dato. Cuando hablas de mi script, te refieres a mi servicio, no? Recuerda que estoy trabajando con la clase nusoap, haciendo llamados a servicios.



Aquì les dejo el còdigo, si alguno puede ayudarme adaptarlo para que busque en varias carpetas de un servidor (que no es el mismo donde estarà alojado el script o servicio) y a su vez en las carpetas que encuentre adentro, algo asì:

Servidor X
/ | \
Carpeta Carpeta Carpeta
/ / / \ / \
carpeta carpeta carpeta carpeta carpeta carpeta
/ \ / \ / \
archivos archivos archivos archivos archivos archivos



Segùn lo que puedo ver, tendrìa que cambiar la parte donde comprueba si son archivos y no otras carpetas, para que al comprobar que sean carpetas, entre y nuevamente haga el recorrido, es lo primero que se me ocurre. De verdad si alguno puede ayudarme a modificarlo o conoce algùn otro que pueda servirme mejor, le estarè eternamente agradecido. Mientras, seguirè investigando.

Muchas gracias!
<?php
header("Content-type: text/xml");
$dir="ruta/de/la/carpeta/a/explorar";
$dr=@opendir($dir);
if(!$dr){
echo "<error/>";
exit;
} else {
echo "<exploracion>";
// recorremos todos los elementos de la carpeta
while (($archivo = readdir($dr)) !== false) {
// comprobamos que sean archivos y no otras carpetas
if(filetype($dir . $archivo)!="dir"){
$tam=round(filesize($dir . $archivo)/1024,0);
echo "<archivo nombre='$archivo' tam='$tam'/>";
}
}
echo "</exploracion>";
closedir($dr);
}
?>
  #4 (permalink)  
Antiguo 29/09/2009, 08:21
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: Manejo de archivos!

Como te comento, ese código (usando opendir) solo funciona de manera local, para hacerlo de forma remota necesitas usar un request HTTP usando sockets como por ejemplo fsockopen() o cURL para poder entrar a las diferentes carpetas e ir analizando el contenido.

El cronjob lo único que hace es programar tu script (o programa) para que se ejecute cada X tiempo.

Saludos.
  #5 (permalink)  
Antiguo 29/09/2009, 09:29
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Manejo de archivos!

Entiendo, sì, por lo que pude probar ese me sirve sòlo de forma local. Muchas gracias por la aclaraciòn amigo. Seguì investigando de los cronjobs y me entrò la siguiente duda, ese cronjob deberìa estar en el mismo servidor donde se encuentra mi servicio, verdad? Es un servidor debian lenny. Si es asì, entonces debo investigar como crearlos en debian. Bueno seguirè investigando y cualquier avance lo irè publicando a ver si consigo màs ayuda de su parte. Muchas gracias de verdad por tu pronta respuesa amigo GatorV! Saludos
  #6 (permalink)  
Antiguo 29/09/2009, 09:31
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: Manejo de archivos!

El crontab es una herramienta nativa de los servidores *nix por lo que solo es que uses el comando adecuado para poder abrir el crontab y poder agregar / quitar tareas.

Saludos.
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 11:48.