1- Imagina una aplicación web que procesa una base de datos con imágenes... (es necesario convertir cada imagen codificada en "base64" a un archivo .jpeg).
¿por que? pues por que si intentas copiar una imagen que se muestre con base64, por alguna razón al pegar la selección en word no pega las imágenes solo el texto...
Y necesito liberar todo ese espacio una vez ya se encuentre en el cliente... es decir que ya este almacenada en la carpeta temporal del cliente...
(corrígeme si estoy mal)
2- si había pensado en esa solución pero me surgió la duda si borro las imágenes se alcanzaran a cargar en el cliente.. necesitaría como un listener que me diga que ya se cargo todo el contenido de la pagina resultante del proceso, junto con todas las imágenes...
Que me podrías sugerir?
Las imagenes no se guardan en base64 dentro de una base de datos, provocas que al intentar indexar la columna termines agotando la memoria del servidor, para eso existen los campos de tipo blob aunque de todas maneras para almacenar imagenes se utilizan servidores estáticos o cdn y no base de datos, imagina si un millon de usuarios intentara solicitar imagenes, terminas con la base de datos abajo y sin portal, en cambio en un servidor de archivos puedes manejar caché entre otras cosas y no pasas por ninguna base de datos. Luego creas un cron que rastree y elimine todas las imagenes que tengan cierta edad aprovechando que los archivos tienen la propiedad de fecha de creación (por ejemplo los que tengan mas de 1 día).
De todas maneras hay una manera de entregar un archivo y eliminarlo pero te va a costar mucha CPU y se trata de que el usuario descargue el archivo solicitandolo a un script en php y este obtenga el archivo con fopen y recorra los bytes de a 2048 y al finalizar que cierre con un fclose y ejecute un "unlink()" el cual se encarga de eliminar el archivo. Es necesario agregar en la parte superior de ese script la opción de que no finalice al finalizar el navegador ya que si el usuario cancela la descarga no se ejecutará el eliminado del archivo, asi que pones esto:
Y eso hará que cuando yo cancele la descarga el servidor continuará con el código hasta llegar al unlink.
Pero como te vuelvo a decir... a menos que tengas un servidor con muchos núcleos y una velocidad considerablemente alta y varios balanceadores, no lo hagas, por último almacenalos y ve eliminandolos por fecha y si es posible no uses archivos, por ejemplo si deseas desplegar un captcha puedes generarlo con la librería GD y luego desplegarlo y listo, no necesitas guardar archivos:
http://php.net/manual/es/function.imagecreatetruecolor.phphttps://github.com/mkoppanen/imagick/blob/master/examples/captcha.php