Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

230
Vistas
El temporizador PHP Quiz debe actualizarse cada segundo, lo que ralentiza el sitio

Estoy creando una aplicación de prueba en PHP utilizando una base de datos de preguntas MYSQL. La aplicación tiene un temporizador en la parte superior que debe mantener el valor correcto del temporizador cuando la página

  1. pasa a la siguiente pregunta en el cuestionario
  2. La página se actualiza con F5
  3. La página se cierra usando Alt+F4 o el botón x
  4. Se hace clic en el botón Atrás

window.unload en javascript no funciona para el botón Atrás, cierre de ventana. No pude encontrar ninguna otra solución, así que opté por la solución algo incorrecta para almacenar el valor del temporizador cada N segundos. Por lo tanto, si el usuario realizara alguna de las 4 actividades anteriores, el temporizador se desactivaría en un máximo de N segundos. Esto requiere que ACTUALICE una tabla MYSQL cada N segundos usando ajax.

En el mejor de los casos, N=1, lo que hace que el sitio sea visiblemente más lento. N=3 funciona mejor, pero no estoy contento con él.

Uso setinterval para ejecutar la función ajax cada N segundos

¿Alguna sugerencia aquí? Por favor, sugiera métodos alternativos para lograr mi objetivo que no requieran una base de datos intensiva. No soy un experto en bases de datos, por lo que esto podría ser trivial.

Versión corta de la pregunta

¿Cómo obtengo el control para realizar alguna acción (por ejemplo, almacenar algo en una base de datos) cuando se presiona el botón Atrás o la página se desenfoca?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No está claro qué hace este "temporizador". ¿Cuenta atrás? ¿Contar hasta? ¿Cual es su propósito? Claramente olvidaste explicar esto.

Digamos que es un temporizador de cuenta regresiva, que le dice a la gente cuánto tiempo les queda para hacer el cuestionario. Les das 10 minutos, 600 segundos y simplemente restas un segundo, cada segundo.

Ahora necesita realizar un seguimiento de cada segundo, almacenar ese número en algún lugar y actualizar lo que se almacena, cada segundo.

¿Qué sucede si almacena solo la hora en que comenzó el cuestionario? Di "2022-02-27 15:45:33". Entonces sabrá que el temporizador se reducirá a cero en "2022-02-27 15:55:33". Cuando es "2022-02-27 15:48:03" sabes que han pasado 2,5 minutos: 150 segundos. Al cronómetro le quedan 450 segundos.

Mediante el uso de un punto fijo en el tiempo, almacenado en algún lugar, puede calcular un tiempo relativo, como un temporizador de cuenta regresiva, sin tener que almacenar el valor del temporizador cada segundo.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Una solución para realizar un seguimiento preciso del tiempo es usar http-header .

 //after 60s it will move automatically to end_test_page header('Refresh: 60; https://end_test_for_user.php/');

Aún así, habrá algunos ajustes en la lógica. Medio:

  1. cada formulario tendrá una identificación única almacenada en la base de datos, por lo que la página final marcará el formulario como usado y no se podrá volver a abrir header('Refresh: 60; https://end_test_for_user.php?id=123') , la identificación se agregará dinámicamente
  2. todas las respuestas se rastrearán en db (en end_test_php, solo necesita agregar una bandera para esa identificación. Bandera = 1 completa)
  3. se pueden presentar múltiples preguntas con ajax (solo será suficiente rastrear el estado del formulario principal)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda