Foros del Web » Creando para Internet » Diseño web »

recarga varias veces la web y consume

Estas en el tema de recarga varias veces la web y consume en el foro de Diseño web en Foros del Web. Hola tengo un problema al entrar a mi web cualquier puede dejar apretado el F5 y ejecuta 2000 veces las consultas entonces cae la web ...
  #1 (permalink)  
Antiguo 24/06/2010, 20:51
(Desactivado)
 
Fecha de Ingreso: mayo-2009
Mensajes: 21
Antigüedad: 8 años, 6 meses
Puntos: 0
recarga varias veces la web y consume

Hola tengo un problema

al entrar a mi web cualquier puede dejar apretado el F5 y ejecuta 2000 veces las consultas entonces cae la web

ahora hice una cosa que evita eso pero me traen problemas

lo que hice fue una session con el tiempo en q entro la persona y si vuelve a entrar antes de los 2 segundos la pagina muere con un die(); osea no se ejecuta nada más para esa perona


pero esto me trae consecuencias ya q muchas cosas de la web tiene reedireccion osea yo agrego un mensaje y apenas lo agrego me va a la pagina principal, esa accion no lleva menos de 1 segundo.


me ayudarian a hacer algo que funcione por favor
  #2 (permalink)  
Antiguo 24/06/2010, 21:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.728
Antigüedad: 8 años, 6 meses
Puntos: 1512
Respuesta: recarga varias veces la web y consume

Lo que puedes hacer es separar la consulta del formulario en otra página. Y el formulario envíe la petición a esa página que contiene solo código de PHP y esta a su vez cuando termine redireccione con header() a la página del formulario. De esa forma el f5 no sobrecargará el servidor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 24/06/2010, 21:44
(Desactivado)
 
Fecha de Ingreso: mayo-2009
Mensajes: 21
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: recarga varias veces la web y consume

No pero el problema lo tengo q me consume en el index de la web osea tanto f5 q apretan carga miles de veces las consultas q estan en el index y me tira la web es como q si entren miles de persona por segundo
  #4 (permalink)  
Antiguo 24/06/2010, 22:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Tema movido desde PHP a Web general
  #5 (permalink)  
Antiguo 25/06/2010, 09:36
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 9 años
Puntos: 19
Respuesta: recarga varias veces la web y consume

Usa un caché
  #6 (permalink)  
Antiguo 25/06/2010, 16:31
 
Fecha de Ingreso: junio-2002
Mensajes: 751
Antigüedad: 15 años, 6 meses
Puntos: 22
Respuesta: recarga varias veces la web y consume

Como te ha dicho abimaelrc puedes usar la función header() hacia otra página.
Otra opción es usar sesiones. Crear una variable de sesión, después con un if() puedes comprobar el valor de esta variable y de una variable enviada por el formulario (un campo oculto por ejemplo), si esa variable de sesión es igual a la que tu has definido en primera instancia, procesar los datos y modificar el valor de la variable de sesión. La siguiente vez que se envíe el formulario al comprobar esta variable de sesión verá que el valor es diferente al inicial y por tanto puedes suponer que el formulario se ha enviado con anterioridad, por tanto en lugar de procesar los datos y/o volver a mostrar el formulario, puedes mostrar un mensaje (dentro de un else{} por ejemplo) indicando que el formulario ya ha sido enviado con anterioridad.

Una variación de este método sería comprobar si existe una variable de sesión especifica, si no existe comprobar si existen datos en $_POST para decidir si se muestra el formulario o si se procesan sus datos y se crea la variable de sesión, y una cláusula else{} en el caso de que la variable de sesión ya exista y por tanto se deban obviar los datos enviados.
Código PHP:
Ver original
  1. if( isset($_SESSION['form1enviado']) )
  2. {
  3.     if( isset($_POST['submit']) )
  4.     {
  5.         //procesar datos
  6.        $_SESSION['form1enviado'] = 1;
  7.     } else {
  8.        //mostrar formulario
  9.     }
  10. } else {
  11.     // mostrar mensaje de formulario anteriormente procesado
  12. }

Si se quiere también se podrían limpiar los datos de $_POST
Pueden haber más opciones (usar un token o identificador único para el formulario ya sea almacenado temporalmente en la base de datos o como sesión, etc.)
También dependerá del tipo de formulario que desees crear, ya que con el método indicado puedes tener problemas si se quiere permitir enviar el formulario más de una vez para distintos datos (para rellenar campos de una base de datos, etc.)

Otras opciones, aunque quizá menos efectivas, usar javascript para eliminar el historial de navegación por la página (para que no utilicen el botón de volver atrás) y desactivar la tecla F5 (pero si alguien utiliza el navegador sin javascript no servirá de nada)

Etiquetas: recarga
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 07:23.