JeuWeb - Crée ton jeu par navigateur
[Résolu] Array serialisé et taille du champs de la base de donnée - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Array serialisé et taille du champs de la base de donnée (/showthread.php?tid=5633)



[Résolu] Array serialisé et taille du champs de la base de donnée - php_addict - 14-08-2011

Bonsoir

en faisant un test ou deux il apparait un gros bug potentiel sur mon jeu

pour les envois de troupes et rapport j'ai besoin de sérialiser un array de données et de le stocker dans la base de donnée, et la taille du dit champs était fixer à VARCHAR(5000)

il apparait que la taille de ce champs est trop petit, et donc l'array sérialisée est tronqué si il dépasse les 5000 caractères, comme vous le savez le serialize() de php est assez verbeux

le soucis c'est que je n'ai aucune idée de la taille maximum du varchar sérialisé, en fait je crois qu'il n'est pas possible de fixer de taille maximum car théoriquement il n'y a pas de limite à la taille de ma variable sérialisée...

alors c'est là que j'en viens à vous pour vous demander que faire pour stocker en bdd un énorme array sérialisé?

- augmenter la taille du champs et mettre une taille extraordinaire?
- compresser (gzip par exemple) la chaine sérialisée ?

avez vous une idée et avez vous rencontrer ce problème de taille ?

bonne nuit à ceux qui dorment

merci de m'avoir lu a+





RE: array serialisé et taille du champs de la base de donnée - Viciousity - 14-08-2011

Changer le champ en TEXT ?
Changer de type de sérialisation ^^


RE: array serialisé et taille du champs de la base de donnée - Sephi-Chan - 14-08-2011

Le type VARCHAR est limitée à 255 caractères.
Il faut simplement que tu passes à TEXT, MEDIUMTEXT ou LONGTEXT.
Ça devrait te permettre de voir venir.


RE: array serialisé et taille du champs de la base de donnée - php_addict - 14-08-2011

ok ok, merci

fait étrange: dans mes tables je presisait VARCHAR(5000) et mysql ne semblait pas faire la tête...


RE: array serialisé et taille du champs de la base de donnée - Sephi-Chan - 14-08-2011

Peut-être qu'il fait un MIN(255, <limite spécifiée>) ! Smile
Toujours est-il qu'il tronque bien à 255. Wink


RE: array serialisé et taille du champs de la base de donnée - php_addict - 14-08-2011

merci, je vais revoir toutes mes tables une par une...

a+


RE: [Résolu] Array serialisé et taille du champs de la base de donnée - zeppelin - 16-08-2011

Au lieu d'avoir ton array genre ('conclusion' => 'big mega text') tu ne peux pas faire des références en chiffre? Genre ('conclusion' => 5), et ailleurs tu as une config qui te dit a quoi cela correspond. Enfin je ne sais pas trop ce que tu enregistre... mais a priori si tu vire le text et que tu parse en json, 255 caractères ça fais un sacré paquet déjà...


RE: [Résolu] Array serialisé et taille du champs de la base de donnée - php_addict - 16-08-2011

merci zeppelin mais en effet j'ai besoin de pas mal de place et 255 caractères ne suffiront certainement pas


RE: [Résolu] Array serialisé et taille du champs de la base de donnée - Sephi-Chan - 16-08-2011

(16-08-2011, 06:30 AM)zeppelin a écrit : Au lieu d'avoir ton array genre ('conclusion' => 'big mega text') tu ne peux pas faire des références en chiffre? Genre ('conclusion' => 5), et ailleurs tu as une config qui te dit a quoi cela correspond. Enfin je ne sais pas trop ce que tu enregistre... mais a priori si tu vire le text et que tu parse en json, 255 caractères ça fais un sacré paquet déjà...

C'est l'assurance d'une mauvaise maintenabilité.
Une base de données, c'est fait pour stocker des… données.
Utilisons-la comme telle.