Il y a un projet où chaque utilisateur peut télécharger un fichier zip contenant environ 2 Go de données …
Le seul problème est qu’il y a quelques très petits fichiers qui doivent changer dans ce zip par utilisateur.
Existe-t-il une manière élégante de résoudre ce problème, à part de ne pas avoir besoin de tout cela dans le zip? Idées que j’ai considérées:
1) Envoi des commandes en attente dans une queue et traitement de cette queue lorsque des ressources sont disponibles … le traitement signifie créer un nouveau fichier zip pour chaque commande, puis le supprimer après N jours
2) Manipuler le fichier zip en PHP en quelque sorte, avant de l’envoyer via une sorte de push brut (par exemple, cracher l’en-tête, puis générer les données en fonction des fichiers + fichiers personnalisés)
Des idées de problèmes d’approche ou de mémoire que je pourrais rencontrer? Merci!
La structure du fichier ZIP est essentiellement:
Cela signifie que vous devriez être capable de construire et de sortir l’archive ZIP à la volée, en ne conservant que les données du répertoire en mémoire jusqu’à ce que vous puissiez les écrire à la fin. L’archive ZIP ne devra jamais exister sur le disque.
Si vous utilisez cette approche, il n’y aura aucun problème de concurrence lors de l’offre du fichier ZIP à plusieurs clients à la fois, et vous ne devrez utiliser aucun espace disque lors de la création de l’archive.
A mon humble avis
vous pouvez envisager deux approche de fichier zip
Avez-vous regardé l’extension zip de PHP? http://php.net/zip
De ce que j’ai vu, vous pouvez manipuler les archives ZIP à la volée de manière OOP. Je ne suis pas sûr de la performance, il se peut que les zips de 2 Go prennent du temps à manipuler, mais vous devriez essayer vous-même.