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?

Aan
fuente
¿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");
Peter Mortensen
fuente
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().

AboQutiesh
fuente
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.

131
fuente
15

Eso es simplemente posible con header () en PHP:

header('Refresh: 1; url=index.php');
Kamlesh
fuente
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;"); 
Thanos
fuente
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.

Mathlight
fuente
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.

Ben Guest
fuente
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.

JvdBerg
fuente
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.

Anoop
fuente
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 () .

Patriks
fuente
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\">";
Prakash Patil
fuente
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 . '">';
Siddharth Shukla
fuente
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á.

0x45
fuente
2
¿Cómo se actualiza periódicamente una página? ¿Estás respondiendo a otra respuesta?
Peter Mortensen