Foros del Web » Programando para Internet » PHP »

transacciones en varias páginas

Estas en el tema de transacciones en varias páginas en el foro de PHP en Foros del Web. Hola a todos. Llevo unos días buscando información acerca de un problema que tengo con las transacciones y aún no he encontrado nada. Y me ...
  #1 (permalink)  
Antiguo 09/04/2010, 07:37
 
Fecha de Ingreso: mayo-2007
Ubicación: España
Mensajes: 147
Antigüedad: 16 años, 10 meses
Puntos: 3
transacciones en varias páginas

Hola a todos.

Llevo unos días buscando información acerca de un problema que tengo con las transacciones y aún no he encontrado nada. Y me resulta extraño porque lo que voy a preguntar debería ser algo habitual.

Tengo una aplicación web en la que el usuario realiza un pedido. El pedido consta de las páginas step1.php, step2.php y step3.php. En cada una de esas pantallas el usuario modifica información que se guardará en la base de datos. El proceso puede durar varios minutos, hasta que el usuario confirme el pedido en la última página.

Mi duda es la siguiente: Se puede abrir una transacción en la página step1.php y que cerrarla en la página step3.php?

Sé que con PHP se pueden usar transacciones, pero esas transacciones se abren y cierran en la misma página. En este caso la transacción engloba varias páginas.

Es esto posible? Actualmente uso MySQL, pero si alguien sabe cómo hacerlo en otro gestor de bases de datos, pues guay.

Muchas Gracias por adelantado.

Última edición por cequiel; 09/04/2010 a las 07:57
  #2 (permalink)  
Antiguo 09/04/2010, 08:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: transacciones en varias páginas

No es posible hacer eso, PHP es un lenguaje stateless, por lo que cada request en cada pagina es una instancia independiente, es por eso que con ningún gestor de bases de datos vas a poder lograr lo que quieres, una transaccion se debe de crear y cerrar en la misma instancia de ejecución.

Para solventar lo que quieres puedes usar una sesión e ir almacenando los datos y al último hacer realmente la transacción contra la base de datos.

Saludos.
  #3 (permalink)  
Antiguo 09/04/2010, 10:40
 
Fecha de Ingreso: mayo-2007
Ubicación: España
Mensajes: 147
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: transacciones en varias páginas

Muchísimas gracias GatorV.

En realidad se trata de una aplicación 'content management' para modificar el contenido de un sitio web. El cliente quería que las modificaciones no se hiciesen públicas hasta que no apretase el botón 'publish'. Y había pensado en las transacciones porque el la parte PHP de la aplicación es muy extensa y compleja como para modificarla.

Por casualidad conoces algún lenguaje de programación que permita esto? por ejemplo J2EE?

Gracias por tu ayuda.
  #4 (permalink)  
Antiguo 09/04/2010, 10:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: transacciones en varias páginas

Con PHP lo puedes hacer, como te indicaron. Solo que tienes que almacenar la información en sesiones. Hasta ahora no conozco limitaciones en cuantos caracteres se pueda guardar en una sesión. No debes tener complicación alguna.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 09/04/2010, 11:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: transacciones en varias páginas

Ya estas hablando de algo diferente, y no necesitas transacciones para eso, lo que puedes hacer es guardar un flag en tu tabla, para indicar si es publico o no, y simplemente al presionar Publish actualizas ese flag y lo muestras en el sitio.

Saludos.
  #6 (permalink)  
Antiguo 09/04/2010, 13:44
 
Fecha de Ingreso: mayo-2007
Ubicación: España
Mensajes: 147
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: transacciones en varias páginas

Ojalá fuese tan sencillo :)

El problema es que el sistema debe ser concurrente y cada una de las modificaciones hechas por un usuario cualquiera deben ser invisibles para el resto hasta que no se hagan públicas. En este caso las transacciones son una buena solución. Además, hay muchas consultas SQL y tendríamos que modificar esas consultas para adaptarlas a esta nueva circunstancia.

En cualquier caso gracias de nuevo por tu ayuda.
  #7 (permalink)  
Antiguo 09/04/2010, 13:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: transacciones en varias páginas

En ese caso puedes hacer algo como un "log" de cosas por cambiar, ya sea en otra tabla, o en archivos de texto plano por usuario y al final de "publish" haces un commit de esos cambios.

En cualquier lenguaje web que encuentres va a ser lo mismo, es la naturaleza de como se ejecuta un request http, ya sea PHP, J2EE, C# etc. las transacciones a la base de datos viven en cada ejecución de pagina.

Saludos.

Etiquetas: transacciones
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:39.