Mon application web PHP a une API qui peut recevoir des fichiers assez volumineux (jusqu'à 32 Mo) codés en base64. L'objectif est d'écrire ces fichiers quelque part sur mon système de fichiers. Décodé bien sûr. Quelle serait la façon la moins gourmande en ressources de faire cela? La réception des fichiers via une API signifie que j'ai une chaîne de 32 Mo dans mon application PHP, pas un fichier source de 32 Mo quelque part sur le disque. J'ai besoin de décoder cette chaîne sur le système de fichiers.Comment faire pour décoder de gros fichiers en base64 dans PHP
L'utilisation propre base64_decode() de PHP ne coupe pas parce qu'il utilise un si je garde beaucoup de mémoire en cours d'exécution dans la limite de mémoire de PHP (je sais, je pouvais lever cette limite, mais je ne me sens pas bien permettre PHP pour utiliser 256 Mo ou plus par processus).
D'autres options? Est-ce que je pourrais le faire manuellement? Ou écrire le fichier sur le disque codé et appeler une commande externe? Toute pensée?
Une bonne idée, mais pas ce que je cherche. Dans mon cas, les applications clientes poussent de gros fichiers sur XML-RPC (HTTP POST) vers mon serveur (avec quelques autres paramètres). Les clients peuvent se trouver derrière le NAT et les pare-feu, il n'est donc pas possible d'extraire les données du client à l'aide de GET. –
Si la structure de la réponse rpc xml est quelque peu statique, vous pouvez parcourir manuellement le corps de la réponse, ce qui vous permet d'éviter complètement toute utilisation de la mémoire. Si vous devez placer les données dans une variable temporaire, vous pouvez modifier un peu la configuration. (Je suis mise à jour l'exemple juste après l'exemple;)) – Evert
Merci pour la mise à jour. Je le trouve supérieur à la réponse que j'ai acceptée à l'origine. –