Actualizar una página usando PHP


148

¿Cómo puedo actualizar una página usando PHP periódicamente? Si no puedo hacerlo con PHP, ¿cuál es el mejor escenario recomendado?


¿Estamos hablando de sincronización (se encuentra con una situación en la que desea actualizar durante el análisis de su script php) refrehs (meta actualización funcionaría bien) o sobre actualización continua asincrónica de una página (más como javascript / ajax)?
Najzero

Respuestas:


275

Puedes hacerlo con PHP:

header("Refresh:0");

Actualiza su página actual y, si necesita redirigirla a otra página, use lo siguiente:

header("Refresh:0; url=page2.php");

1
Actualizar no es un encabezado oficial, pero es compatible con muchos navegadores desde Netscape Navigator. Eso significa que tendrá que realizar una prueba para asegurarse de que su audiencia utilice navegadores compatibles.
Patanjali

55
El uso de 0 martillará continuamente su servidor y / o su caché local, especialmente si tiene imágenes en la página. Si solo necesita actualizar la información en la pantalla, como los precios de las acciones, pero no usa esa información en un formulario o desde JavaScript, tal vez use una etiqueta de iframe que apunte a una página con solo la información que se está actualizando, y con un retraso apropiado de cómo actual la información debe ser.
Patanjali

1
Esto causa el error "Encabezados ya enviados" en mi código ... ¿hay otra forma?
DBS

Verifique aquí para una solución; tldr, no puede generar nada antes de usarloheader();
adrian

109

En PHP puedes usar:

$page = $_SERVER['PHP_SELF'];
$sec = "10";
header("Refresh: $sec; url=$page");

O simplemente use JavaScript window.location.reload().


2
El encabezado de Yazana ('Ubicación:') se usa para redirigir al usuario a cualquier url, no puede actualizar la página usándolo.
Patriks

2
Pratik Está usted equivocado. de hecho, puede usar el encabezado ("refresh:") para actualizar una página
131

66
Puede hacer ambas cosas, aunque prefiero no esperar con:header("Location: ".$_SERVER['PHP_SELF']);
John Magnolia

44
Una nota sobre esta solución: si su sitio está implementando algún tipo de enrutamiento agradable o reescritura de URL (es decir, casi cualquier marco por defecto), puede encontrar $_SERVER['PHP_SELF']la verdadera ruta del script, y no la URL real que ve en su navegador. En cuyo caso, intente usar en su $_SERVER['REQUEST_URI']lugar.
BadHorsie

18

Seguro que puedes actualizar una página periódicamente usando PHP:

<?php
    header("refresh: 3;");
?>

Esto actualizará la página cada tres segundos.



12

He encontrado dos formas de actualizar el contenido de PHP:

1. Usando la metaetiqueta HTML :

echo("<meta http-equiv='refresh' content='1'>"); //Refresh by HTTP 'meta'

2. Usando la frecuencia de actualización de PHP:

$delay = 0; // Where 0 is an example of a time delay. You can use 5 for 5 seconds, for example!
header("Refresh: $delay;"); 

2
//Refresh by HTTP META => // Refresh by HTML METAtambién esto parece una respuesta copiada desde arriba.
php_coder_3809625

11

Además de todas las formas de PHP para actualizar una página, la página también se actualizará con la siguiente metaetiqueta HTML:

<meta http-equiv="refresh" content="5">

Consulte Meta actualización : "actualiza automáticamente la página web o el marco actual después de un intervalo de tiempo determinado"

Puede establecer el tiempo dentro del contentvalor.


3
esto se actualizará cada 0 segundos, probablemente no es lo que buscas :)
warren

3
Sí, estoy comentando esta respuesta: siempre hay margen de mejora. Y tiene razón, puede establecer contentun valor igual a cualquier valor en segundos: mi comentario todavía vale la pena señalar que una actualización de 0 segundos probablemente no sea lo que está buscando :)
warren

2
@Mathlight y cualquier otra persona se queja de comentarios retrasados. Solo porque haya seguido adelante, un futuro lector puede haber experimentado el problema, y ​​su respuesta / comentario, junto con los retrasados ​​que lo cuestionen, aún puede ser relevante para ellos.
Patanjali

1
@Mathlight No estoy seguro de por qué la gente piensa que solo porque una publicación sea antigua no puede tener ningún valor comentarla. Deberías deshacerte de ese pensamiento.
Mark Kramer

¿Qué quiere decir con "Construir en la declaración if de" ?
Peter Mortensen

2

header('Location: .'); parece actualizar la página en Chrome, Firefox, Edge e Internet Explorer 11.


Como debería (una vez): php.net/manual/en/function.header.php : "El segundo caso especial es el encabezado" Ubicación: ". No solo devuelve este encabezado al navegador, sino que también devuelve un código de estado REDIRECCIONAR (302) al navegador a menos que el código de estado 201 o 3xx ya se haya configurado ".
Sz.

Pero eso no es lo que pidió el OP. Todavía lo voté porque me di cuenta de eso solo después, lo siento. ¡Es Navidad pronto! :)
Sz.

1

No puedes hacerlo en PHP . Una vez que se carga la página, PHP muere y está fuera de control.

Tienes pocas opciones:

  • Usar JavaScript
  • Use la metaetiqueta de actualización, <meta http-equiv="refresh" content="5">

Creo que la metaetiqueta de actualización es la más fácil y conveniente.


63
Incorrecto, puede actualizar una página periódicamente utilizando PHP, si utiliza la función de encabezado de PHP como esta: header ("refresh: 3;");
131

1
Puede actualizar una página en PHP usando el encabezado. Además, usar META REFRESH NO es ideal para SEO.
TheCarver

1
Creo que esto está mal, siempre hay una manera: creo que si quiere actualizar la página con php después de un tiempo, puede enviar una solicitud ajax a una página que tenga el código de actualización de php. pero en absoluto tu respuesta es buena
Mohammad Kermani

2
Incorrecto ! Por favor, arregle su respuesta ... De hecho, esto se puede hacer con PHP
M_R_K

1
¡Esto está completamente mal! De todas las formas posibles. Puede hacerse por PHP, por encabezados (actualización) y por redireccionamientos activados. Parece que todas las otras respuestas son mejores.
Budimir Grom

1

Puedes actualizar usando JavaScript. En lugar de la actualización completa de la página, puede proporcionar los contenidos para que se actualicen en un div. Luego, al usar JavaScript, puede actualizar ese div en particular solamente, y funciona más rápido que la actualización completa de la página.


2
Si incluye el código, esta respuesta podría ser un poco más comprensible.
I.Am.A.Guy

1

PHP es un lenguaje del lado del servidor, por lo que no puede actualizar la página con PHP, pero JavaScript es la mejor opción para actualizar la página:

location.reload();

La visita Ubicación método reload () .


1
Jajajaja ok entonces, como desees. Mira esto => ( wrongDomain.epl.fanxt.com ) no especificó que actualizará la página 'después' de que esté cargada. Si la decisión de actualizar se tomó durante la ejecución del código php, entonces php ciertamente puede actualizar, y puede elegir después de cuántos segundos actualizar.
Mohammed Joraid

@ Ahmad, no puedes considerarlo como una característica de PHP, es una característica de HTML. Entonces, en el orden que está haciendo, configure el encabezado de respuesta html. Y es por eso que dije que no puedes hacerlo con PHP. Otra cosa, no puede actualizar la página después de cargar / cuando sea necesario. Sí, puede configurarlo durante algunos segundos o etc. tal como respondió.
Patriks

oh los tecnicismos. ¿Crees que es posible usar el encabezado para actualizar una imagen específica? Eso es si transmites la imagen a través del php de grueso.
EZFrag

Realmente @EZFrag, no sé, ¿puedes decirme cómo es posible?
Patriks

Ah sí, lo encontré. Al principio probé una etiqueta de imagen normal. Sin suerte. Pero luego reemplacé la etiqueta de imagen con la etiqueta de iframe y listo. La imagen se actualiza automáticamente. Esto va a ayudar mucho con algunas de mis imágenes de estado en la página :) Para aquellos que se preguntan, estoy sirviendo la imagen a través de php junto con el encabezado de actualización, configurando el archivo php como el src del iframe.
EZFrag

1

Echo la metaetiqueta así:

La URL es aquella a la que se debe redirigir la página después de la actualización.

echo "<meta http-equiv=\"refresh\" content=\"0;URL=upload.php\">";

Pero la pregunta no es acerca de la redirección. Se trata de actualizar.
Peter Mortensen

1

Agregar esta metaetiqueta en PHP podría ayudar:

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=' . $location . '">';

3
Si bien este fragmento de código puede resolver la pregunta, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para los lectores en el futuro, y que esas personas podrían no conocer los motivos de su sugerencia de código.
DimaSan

Pero la pregunta no es acerca de la redirección. Se trata de actualizar.
Peter Mortensen

0

Un truco es agregar un número aleatorio al final de la URL. De esa manera no tiene que cambiar el nombre del archivo cada vez. P.ej:

echo "<img src='temp.jpg?r=3892384947438'>"

El navegador no lo almacenará en caché mientras el número aleatorio sea diferente, pero el servidor web lo ignorará.


2
¿Cómo se actualiza periódicamente una página? ¿Estás respondiendo a otra respuesta?
Peter Mortensen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.