PHP4.0 proporciona una colección de funciones de almacenamiento en búfer de salida. La compatibilidad con el almacenamiento en búfer de salida le permite escribir funciones que envuelven funciones alrededor de búferes comprimidos. La compatibilidad con el almacenamiento en búfer de salida en PHP4 permite almacenar la información del encabezado HTML independientemente de si se genera el cuerpo HTML. Pero en PHP, la información del encabezado ((encabezado(), tipo de contenido y cookies) no se almacena en el búfer.
En el proceso de uso de PHP, es inevitable usar encabezados y
setcookie dos funciones, estas dos funciones enviarán una parte de la información del encabezado del archivo al navegador, pero si hay alguna salida (incluidas salidas vacías, como espacios, retornos de carro y avances de línea) antes de usar estas dos funciones, se producirá un error. Cuando se le solicita, la información del mensaje es la siguiente: "¡El encabezado ya estaba listo para enviar por"! . Se han agregado varias funciones para el control del búfer a PHP 4.0. El uso de estas funciones puede ayudarnos a resolver muchos problemas.
Nombre de la función Formato de la función Descripción de la función
Flush flush() genera el contenido del búfer y lo elimina. Esta función se utiliza con frecuencia y es muy eficiente.
ob_start void ob_start(void) Abre el búfer de salida. Cuando el búfer está activo, toda la información que no sea el encabezado del archivo del programa PHP no se envía, sino que se guarda en el búfer interno. Para generar el contenido del búfer, puede usar ob_end_flush() o usar ob_end_clean() para generar el contenido del búfer.
ob_get_contents cadena ob_get_contents(void) Devuelve el contenido del buffer interno. Esta función devuelve el contenido del búfer actual, o FALSO si el búfer de salida no está activo.
ob_get_length int ob_get_length(void) Devuelve la longitud del búfer interno. Esta función devuelve la longitud del búfer actual; como ob_get_contents, si el búfer de salida no está activo. Devuelve FALSO.
ob_end_flush void ob_end_flush(void) Envía el contenido del búfer interno al navegador y cierra el búfer de salida. Esta función envía el contenido del búfer de salida (si lo hay).
ob_end_clean void ob_end_clean(void) Elimina el contenido del búfer interno y cierra el búfer interno. ¡Esta función no genera el contenido del búfer interno!
ob_implicit_flush void ob_implicit_flush ([int flag]) Activa o desactiva el vaciado absoluto. Cualquiera que haya usado Perl conoce el significado de $|=x. Esta cadena puede abrir/cerrar el búfer, y la función ob_implicit_flush es la misma. El valor predeterminado es cerrar el área del búfer y activar la salida absoluta.
2. Análisis de ejemplo:
1. Utilice funciones de control del búfer para evitar errores al enviar información en el encabezado del archivo.
<? //Indicación PHP
ob_start(); //Abrir el búfer
echo "Bienvenido /n"; //salida
header("ubicación:next.php"); //Redirigir el navegador a next.php
?>
Si se elimina ob_start, PHP generará un error en la línea 4 del archivo y el mensaje de error es "El encabezado ya estaba listo para enviarse". Sin embargo, si se agrega ob_start, no se mostrará ningún error. La razón es que cuando se agrega ob_start. Cuando se abre el búfer, el error después del eco Los caracteres no se enviarán al navegador, pero permanecerán en el búfer del servidor. No se generarán hasta que use flush u ob_end_flush, por lo que no habrá ningún error en el encabezado del archivo. ha sido emitido!
2. Guarde el resultado (este es un uso muy clásico).
Suponga que desea conocer la información de salida de la pantalla del cliente, como los resultados de salida de funciones, etc., y esta información de salida diferirá según el cliente. Podemos usar la función <?phpinfo(); ?> para obtener la información de configuración del servidor, pero ¿qué pasa si queremos guardar la salida de la función phpinfo()? Antes no existía el control del búfer, se puede decir que no había forma alguna, pero con el control del búfer podemos solucionarlo fácilmente.
<?
ob_start(); //Abrir el búfer
phpinfo(); //Usar la función phpinfo
$info=ob_get_contents(); //Obtener el contenido del buffer y asignarlo a $info
$file=fopen('phpinfo.txt','w'); //Abre el archivo phpinfo.txt
fwrite($file,$info); //Escribe información en phpinfo.txt
fclose($file); //Cierra el archivo phpinfo.txt
?>
Usando el método anterior, puede guardar la información phpinfo de diferentes usuarios. ¡Es posible que esto no haya sido posible antes! De manera similar, el método del búfer se puede utilizar para guardar tareas que son difíciles de completar con métodos normales. Este es en realidad un método para convertir algunos "procesos" en "funciones".