Foros del Web » Programando para Internet » PHP »

memoria usada con funciones ob_*()

Estas en el tema de memoria usada con funciones ob_*() en el foro de PHP en Foros del Web. en mis scripts estoy usando las funciones de control de salida para evitar errores de cabeceras, pero en el final del script copio todo el ...
  #1 (permalink)  
Antiguo 18/09/2004, 12:34
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
memoria usada con funciones ob_*()

en mis scripts estoy usando las funciones de control de salida para evitar errores de cabeceras, pero en el final del script copio todo el buffer a una variable, luego borro el buffer e intervengo la salida.

el problema esta en q en el punto donde la variable es igual al buffer, la cantidad de datos en memoria se duplican, imaginense q tengo q mostrar muchos registros de una base de datos, se me congelaría el script por falta de memoria.

puedo intervenir directamente el buffer (cambiar cadenas, agregar o borrar cadenas)?
o se puede borrar el buffer mientras se copia a la variable?

o q otra tecnica puedo ocupar para optimizar el uso de memoria
  #2 (permalink)  
Antiguo 19/09/2004, 15:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La mejor técnica que puedes emplear es NO usar el control del buffer para solventar un problema que se -debe- solucionar reorganizando tu forma de programar.

Tu sabes lo comodo que es usar ob_start() .. hacer todos los header() y demás donde te dé la gana y al final hacer un ob_end_xxx() .. pero, eso como ya ves aumenta los recursos de memoria ocupados por esas acciones. Debes usar el control del buffer con moderación, hay muchos casos que biene bien y/o tal vez el uso del control del buffer es la única solución .. pero, para el trabajo cotidiano como "header() .. o session_start() .. o setcookie() .. " por poner ejemplos -dedes- reestruccturar tu programación para enviar dar "salida" antes de que tengan que intervenir ese tipo de funciones que envian cabeceras al cliente.

Cita:
puedo intervenir directamente el buffer (cambiar cadenas, agregar o borrar cadenas)?
El buffer de salida es eso mismo.. la "salida" .. ahí en ese punto ya no hay variables ni cadenas ni nada más que lo que tendría que presentar el cliente que uses (navegador en estos casos).

Cita:
o se puede borrar el buffer mientras se copia a la variable?
No, la función que hace la captura del buffer para que lo puedas llevar a una variable no tiene más control durante su ejecución (ob_get_contents() ..).

Un saludo,
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 00:44.