Foros del Web » Programando para Internet » PHP »

Guardar constantemente XML a MySQL

Estas en el tema de Guardar constantemente XML a MySQL en el foro de PHP en Foros del Web. Buenos días, Les cuento. Necesito guardar cada 20 minutos tres valores que genera un XML a una base de datos MySQL. Ya que luego necesito ...
  #1 (permalink)  
Antiguo 11/05/2012, 09:31
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 0
Guardar constantemente XML a MySQL

Buenos días,

Les cuento. Necesito guardar cada 20 minutos tres valores que genera un XML a una base de datos MySQL. Ya que luego necesito tomar esos datos para generar una grafica y comparar valores durante una hora.

Alguien tiene una idea como lograr esto?
  #2 (permalink)  
Antiguo 11/05/2012, 09:36
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: Guardar constantemente XML a MySQL

Que sistema operativo usa el servidor?

Si usas linux puedes usar Cron Jobs.
Si usas windows puedes usar las tareas programadas.

ahora si lo prefieres, lo que yo hago es usar un servidor con un sleep de php o un delay de setTimeOut en JavaScript, claro que en estos casos tendrás que siempre asegurarte de abrir esa ventana...

Bueno 4 opciones, cual te conviene?
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 11/05/2012, 09:40
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Guardar constantemente XML a MySQL

Buenas,

Uso Windows y Apache MySQL. El archivo XML se genera de otra aplicacion y quiero que tres variables que arroja se guarden en la BD.
  #4 (permalink)  
Antiguo 11/05/2012, 09:50
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Guardar constantemente XML a MySQL

Este es el codigo que podría utilizar para subir el XML a MySQL.

Pero necesito que sea cada 20 minutos

Código:
/***************************************************************
 * Conection Params Page - importxml.php
 * Author: J. Manuel Navarro ( http://www.manuelnavarro.com )
 *
 * Script ejemplo de importación de XML a mySql con PHP 5
 ***************************************************************/

// Variable con el nombre del fichero a importar
$xml_file = 'libros.xml';

if (file_exists($xml_file)) {
    $xml = simplexml_load_file($xml_file);
} else {
    exit('Error al intentar abrir el fichero '.$xml_file);
}

// Todo bien asi que abrimos BD para importar
require 'config.php';    

/* Recorremos el XML */
$count=0;
foreach ($xml->libro as $libro) {  
    // Inserta el libro en la tabla 
   $qry = "INSERT INTO libros ".
      "(codigo, titulo, editorial, autor, descripcion,precio)".
      " VALUES ('$libro->ref', ".
      "'$libro->titulo', ".
      "'$libro->editorial', ".
      "'$libro->autor', ".
      "'$libro->desc', ".
      $libro->precio.")";

   // Ahora ejecutamos el INSERT en la BD         
   $result = mysql_query($qry) or die(mysql_error());

   // Y necesitamos recuperar el ultimo ID para relacionar sus imagenes
   $libro_id = mysql_insert_id ();   

    // Y ahora sus imágenes (en este caso tiene 3)
   for ($i=1;$i<=3;$i++) {
     $img_url = $libro->images->image[$i]->url;           
     $img_des = $libro->images->image[$i]->titulo;
       $qry = "INSERT INTO img_libros (libro_id, url, descripcion) ".
           "VALUES ($libro_id, '$img_url', '$img_des')";          
       $result = mysql_query($qry) or die(mysql_error());       
   }  

   // Incrementamos contado para ver cuantos libros se importan.
   $count++;
}

echo "<br/>";
echo "-------------------------------------------<br/>";
echo "Total de libros importados: $count properties<br/>";
echo "-------------------------------------------<br/>";

?>
  #5 (permalink)  
Antiguo 11/05/2012, 10:00
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: Guardar constantemente XML a MySQL

Entonces lo que podrías intentar es programar windows para que ejecute esa aplicacion que genera el XML y la página con el código php que lo hace cada 20 minutos.

para abrir las tareas programas abre la ventana de ejecutar (o presiona Win+R) y escribe "taskschd.msc" y presiona enter.

Entonces verás el programador de tareas, al lado derecho de la pantalla verás las opciones para crear o modificar tareas.

-----------------------

Ahora si prefieres usar la página sin tareas programadas, las funciones que mencioné antes son:

PHP: SLEEP:

sleep(20*60); //(20 minutos de 60 segundos)
header("Location:cicle.php");

(En este caso deberías modificar tu archivo php.ini para que permita ejecuciones de scripts de 20 minutos).

JS: SETTIMEOUT:

function gotocicle() location.href='cicle.php';
setTimeout("gotocicle()"+frm_name+"')",20*60*1000) ; //20 minutos de 60 segundos cada uno de 1000 milesimas de segundo cada uno

Saludos!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #6 (permalink)  
Antiguo 11/05/2012, 10:14
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Guardar constantemente XML a MySQL

Pero este codigo

Código:
<script language=javascript>
function gotocicle() location.href='contador.php';
setTimeout("gotocicle()"+frm_name+"')",20*60*1000) ; //20 minutos de 60 segundos cada uno de 1000 milesimas de segundo cada uno
</script>
Iría junto al script php que sube el XML a la BD MySQL??

Muchas gracias
  #7 (permalink)  
Antiguo 11/05/2012, 10:18
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: Guardar constantemente XML a MySQL

si, el cual a su vez es contador.php, lo que hace ese código es redirigirse a si misma cada 20 minutos, puedes probarlo escribiendo menos tiempo para que veas lo que hace:

Cometí un error, Borra el "frm_name" que se me ha quedado del copy/paste y reduce el tiempo a 5 segundos para que veas como funciona:

setTimeout("gotocicle()",5*1000) ; //5 segundos de 1000 milesimas cada uno
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 11/05/2012, 10:33
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Guardar constantemente XML a MySQL

Chevere, ya funciona. Pero tengo otra duda Straim. Para realizar ese proceso siempre tengo que tener la ventana ejecutada?

Saludos
  #9 (permalink)  
Antiguo 11/05/2012, 10:37
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: Guardar constantemente XML a MySQL

si, eso es lo malo de las 2 ultimas opciones, por eso lo mejor sería usar las tareas programadas, ahora si no te molesta tener esa ventana abierta en tu servidor entonces puedes usarla XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #10 (permalink)  
Antiguo 11/05/2012, 13:34
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Guardar constantemente XML a MySQL

Amigo, si programo las tareas siempre se van abrir los programas que ejecuto o eso se hace internamente:

El proceso sería así:

1) Ejecuto la aplicacion que genera el XML

2) Ejecuto el php que sube los datos a la BD MySql

Listo, abro la pagina en cualquier momento y veo los datos registrados en la grafica.
  #11 (permalink)  
Antiguo 11/05/2012, 14:48
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: Guardar constantemente XML a MySQL

lo ideal sería que ejecutaras comandos, pero además las tareas automáticas te permiten correr programas ocultos y también cerrarlos pero lo mejor es usar comandos simples como localhost/myscript.php.

Solo asegurate de poner "Desencadenadores" que sean ciclicos, ahí podrás poner que se ejecute cada 5 minutos después de iniciar sesión para probar, luego cierras tu sesión y la abres para que veas la ejecución (si esta oculta no la veras), para probar intenta solo mostrar mensajes (es una de las 3 opciones de tareas que tiene el programador), si ves el mensaje cada 5 minutos entonces está bien :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Etiquetas: mysql, xml
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 21:51.