Foros del Web » Programando para Internet » PHP »

Una para campeones (php xml)

Estas en el tema de Una para campeones (php xml) en el foro de PHP en Foros del Web. Hola a todos! He hecho algunas pruebas para parsear documentos xml remotos y más o menos creo que ya sé como va el tema. Lo ...
  #1 (permalink)  
Antiguo 21/12/2005, 13:49
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Una para campeones (php xml)

Hola a todos!

He hecho algunas pruebas para parsear documentos xml remotos y más o menos creo que ya sé como va el tema.

Lo que tengo ahora es un script que "parsea" un xml (predefiniendo la url) y me lo deja en xhtml.

Ahora es cuando se complican las cosas:

Los archivos xml que manejo, son bastante grandes y es algo engorroso cada vez hacer la petición del xml remoto (con el consiguiente gasto de bando de ancho que genero al server donde está alojado el xml)

¿Es posible que cada día mi servidor se conecte con el que tiene los xml y los guarde?

¿alguien sabe como programar esto?

Saludos.

Ya de paso si alguien sabe de una clase "general" para parsear datos xml a html, se lo agradecería.

Saludos!
  #2 (permalink)  
Antiguo 21/12/2005, 13:57
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
De la misma manera que parseas y haces la salida del xml a xhtml, guardaris eso en una db o un xml en tu host...vos ya tenes hecho el parser para ese xml en particular, por lo que vos tenes la solucion al tema ;)

Saludos
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 21/12/2005, 21:40
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Pero esto es precisamente lo que no se hacer.

Necesitaría que cada x tiempo se conectara mi server con el que tiene el xml y rellenara/actualizara la base de datos

¿alguien sabe como hacerlo?
  #4 (permalink)  
Antiguo 22/12/2005, 05:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero el problema concreto cual es dentro de los DOS procesos que tienes que hacer:

1) Obtener cada X tiempo el XML concreto de cierto URL.
2) "Parsear" ese XML para llevar esos datos a una BD.

Si tienes problemas con el primer punto .. sobre "conectarte" a intervalos de tiempo .. eso lo resuelves con un "Cron Job" (Linux) o "Taréa Progamada" (Windows). Es decir .. con esa "herramienta" del S.O. del servidor ahí configuras uno de estos (cron job o taréa programada) que llame a tu script.php de proceso que hará la conexión a tu "xml" remoto y el "parseo" del mismo para crear/actualizar los registros de la BD que correspondan.

Un saludo,
  #5 (permalink)  
Antiguo 22/12/2005, 06:35
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 15 años
Puntos: 2
Te puedes crear una tabla en donde guardar los xml, y le pones en un campo la fecha de cuando guardaste esos datos.

Cuando un usuario se meta a tu pagina, compara la fecha actual con la que esta en la bd, si coinciden muestra lo que esta en la bd, sino borra la bd, carga los datos nuevamente y pone la fecha actual y listo.

Ahi puedes ver tu cada cuanto tiempo lo quieres, yo te rcomendario que sea diario.

saludos.
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #6 (permalink)  
Antiguo 22/12/2005, 10:08
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
¿Podrías poner un código de ejemplo?


Gracias
  #7 (permalink)  
Antiguo 22/12/2005, 10:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El concepto que comenta Quest .. es válido pero con un pequeño detalle. Tienes que fijarte y dar un tiempo máximo como de "caducidad" de tus datos para que esa "visita" que ejecute tal script.php tuyo (tendrás que insertar ese código en alguna de las páginas que veas que más movimiento tienen de visitas de tu sitio) fuerze a procesar otra vez tu XML si está fuera del intervalo de tiempo entre esa fecha/hora de creación de ese XML en tu BD, la hora actual y el tiempo que definas como que corresponda ir a llamar a datos "frescos" de ese XML.

Un saludo,
  #8 (permalink)  
Antiguo 22/12/2005, 12:05
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Gracias a los dos por contestar.

Entiendo los métodos que comentais, pero no me va a resultar nada fácil conseguir lo que quiero, ya que no dispongo de unos conocimientos muy amplios.

Os pediría que me ayudaseis a estructurar por partes lo que debo hacer para conseguirlo.

Explico lo que tengo y lo que quiero hacer:

- hay varios archivos xml en un server remoto (ej: http://www.infomallorca.net/xml/sema...tacles.ct.html)

- Mi objetivo es poder consultar esos datos como si fuese una base de datos propia (poder hacer consultas, paginaciones, ...)

- Estos datos se actualizan semanalmente

- Mi servidor no dispone de la opción de crear un "cron job"

- Para consultar estos datos se me ocurren 2 soluciones:
1) Meter estos datos en una base de datos mysql propia
2) traducir ese xml a arrays en php y generar un archivo para poder consultarlo

Si escojo la primera opción, tendria solucionado lo de realizar consultas, porque sé manejar un poco mysql

Si escojo la segunda no sé como hacer una consulta a esa colección de arrays que generaría.


En cualquier caso, lo que necesito es parsear el xml, he probado algunas clases, pero no las entiendo completamente y no presentan los datos como quiero. ¿me recomiendan alguna en particular?

¿después como cargo esos arrays en mysql?

¿si no cargo los datos a mysql y me quedo con los arrays, como los consulto como si tratara de un "SELECT * FROM..."

Creo que de momento me conviene solucionar esa parte, después ya me meteré en el tema de la actualización de los xml.

Ah se me olvidaba, otra cosilla.

¿como sería un script php que al ejecutarse guardase en una carpeta determinada un archivo xml ubicado en otro servidor?


Saludos!

Última edición por sintesk7; 22/12/2005 a las 12:18
  #9 (permalink)  
Antiguo 23/12/2005, 17:53
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Es correcto el planteamiento?
  #10 (permalink)  
Antiguo 26/12/2005, 05:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
En cualquier caso, lo que necesito es parsear el xml, he probado algunas clases, pero no las entiendo completamente y no presentan los datos como quiero. ¿me recomiendan alguna en particular?
Yo te recomendaría estudiar mejor esas classes que has probado. No te puedo recomendar ninguna por qué no las uso, pero es cosa de leer su documentación y sobre todo entender que es "XML" y como está estructura da la información para que veas que son esos conectos de "nodos" y demás historias que hablan cuando se referencia a XML.

Te comento esto por qué .. te lleves los datos a una BBDD o los leas directamente y proceses ("parsear") vas a tener que usar alguna de estas classes para que te ayuden a leer los datos que necesites de tu XML según su estructura.

El tema de llevarte todo ese XML a una BBDD o trabajarlo directamente ("en línea") ya dependerá de que tanto los datos de ese XML varían o que tantas consultas sobre este se hacen. Por supuesto .. si tu conoces ya SQL te será más facil trabajar tus datos desde tus BBDD y será más óptimo para hacer consultas.

Cita:
¿como sería un script php que al ejecutarse guardase en una carpeta determinada un archivo xml ubicado en otro servidor?
Y al "otro servidor" como accedes? .. por HTTP (con autentificación o sin ella? .. podría ser por FTP (de forma más segura)? .. como?.

Un saludo,
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 13:07.