Mi aplicación web PHP tiene una API que puede recibir archivos razonablemente grandes (hasta 32 MB) codificados en base64. El objetivo es escribir estos archivos en algún lugar de mi sistema de archivos. Descifrado por supuesto. ¿Cuál sería la manera menos intensiva en recursos de hacer esto?Cómo base64 decodificar archivos grandes en PHP
Editar: Recibir los archivos a través de una API significa que tengo una cadena de 32MB en mi aplicación PHP, no un archivo fuente de 32 MB en algún lugar del disco. Necesito decodificar esa cadena en el sistema de archivos.
Usando propia base64_decode() de PHP no es así enfriamiento, ya que utiliza una gran cantidad de la memoria, así que seguir funcionando en límite de memoria de PHP (lo sé, podría aumentar este límite, pero no me siento bien acerca de lo que permite PHP para usar 256MB más o menos por proceso).
¿Alguna otra opción? ¿Podría hacerlo manualmente? ¿O escribir el archivo en el disco codificado y llamar a algún comando externo? ¿Cualquier pensamiento?
Una buena idea, pero no es lo que estoy buscando. En mi caso, las aplicaciones cliente están enviando archivos grandes sobre XML-RPC (HTTP POST) a mi servidor (junto con un par de otros parámetros). Los clientes pueden estar detrás de NAT y firewalls, por lo que no es posible obtener los datos del cliente utilizando GET. –
Si la estructura de la respuesta xml rpc es algo estática, puede recorrer manualmente el cuerpo de la respuesta, por lo que aún puede evitar por completo el uso de la memoria. Si debe colocar los datos en una variable temporal, puede cambiar la configuración un poco. (Estoy actualizando el ejemplo justo después del ejemplo;)) – Evert
Gracias por la actualización. Lo encuentro superior a la respuesta que originalmente acepté. –