Je crée un jeu en ligne en PHP où les utilisateurs peuvent créer des personnages jouables. Chaque personnage peut avoir un portrait téléchargé par l'utilisateur. Un joueur peut avoir simultanément plusieurs caractères, et les images pour eux peuvent être changées n'importe quand. Naturellement, les images doivent être redimensionnées et recompressées pour éviter les gros fichiers. Quand le joueur change ses données (parmi lesquelles l'image), puis frappe "save", la validation côté serveur intervient. Il vérifie des choses comme des noms de caractères non-uniques, des champs obligatoires vides, etc. Si des erreurs sont trouvées, elles sont affichées. Dans ce cas, le formulaire doit être pré-rempli avec les données que le joueur a saisies, il n'a donc qu'à changer le bit défectueux, ne pas tout re-taper. Mais comment sauvegardez-vous l'image dans un état "temporaire"?Comment gérez-vous les téléchargements temporaires d'images en PHP?
Je ne peux pas pré-remplir le champ de téléchargement de fichier, les navigateurs ne le permettent pas. Si je l'enregistre dans un fichier temporaire, l'image doit alors être nettoyée à un moment donné, car le joueur peut simplement fermer son navigateur et abandonner tout le processus. Quand cela devrait-il être? Et quel nom de fichier dois-je choisir pour le fichier temporaire? Si le joueur ouvre le même personnage à éditer dans deux onglets du navigateur, ils ne devraient pas entrer en conflit (chacun d'entre eux devrait avoir sa propre copie).
Comment pourriez-vous résoudre ce problème?
Bonne réponse. Upvoted.Cependant, aussi bizarre que cela puisse paraître, mon client n'aime pas les emplois cron, parce qu'il n'a pas eu affaire avec eux et ne veut pas de nouvelles choses non testées. Peut-être que vous pouvez trouver une autre solution sans emplois cron? –
Bien sûr, il suffit d'incorporer le nettoyage du répertoire dans le code de gestion de téléchargement d'images. Lorsque la validation de création/mise à jour est terminée (avec succès) et que vous supprimez le fichier image temporaire, scannez le reste du répertoire pour rechercher les images expirées et supprimez-les. – pix0r
Eh bien ... c'est une option. En fait, je me suis déjà contenté de le stocker en session au lieu d'un dossier temporaire (je stocke des sessions en MySQL). Puisque l'image redimensionnée sera assez petite, je pense que ce n'est pas un gros problème. –