Bonjour,
Est-ce qu'il y a une limite à un JSON que l'on balance d'un serveur A à un serveur B ?
je balance un json en ajax
d'un serveur A via une SPA Angular JS pour créer une sauvegarde que j'encode en 64+serialize sur un serveur B avec cakephp en backoffice.
$tmp2 = array(
'user_id' => $this->request->data['json']['user_id'],
'name' => $this->request->data['json']['name'],
'json' => base64_encode(serialize($this->request->data['json']['json'])),
'grid15' => base64_encode(serialize($this->request->data['json']['grid15'])),
'img' => $fileName,
);
$this->Composition->save($tmp2);
Quand je souhaite l'afficher dans mon backoffice j'ai
unserialize(): Error at offset 49147 of 49151 bytes
C'est la première fois que j'ai ce type d'erreur.
Quand je regarde de plus près j'ai l'impression que mon serialize est coupé et donc je me demande si c'est pas la taille de mon JSON envoyé ?
le Json envoyé contient des éléments comme ci-dessous
array(
'i15-1-4' => array(
'element' => 'i15-1-4',
'img' => 'url img',
'price' => '35',
'xy' => '1-4',
'x' => '1',
'y' => '4',
'taille' => '30',
'rotation' => '0'
),
array(
'i15-1-5' => array(
'element' => 'i15-1-5',
'img' => 'url img',
'price' => '35',
'xy' => '1-4',
'x' => '1',
'y' => '4',
'taille' => '30',
'rotation' => '0'
),
X fois
j'ai remarqué qu'a partir de 125 élément, sa plante
Peut-on encode le json avant l'envoie ?
Merci
J'ai trouvé...
Erreur de débutant, c'est bien un problème lors de la save mon type de champs dans ma BDD est 'text' et forcement je dépasse le quota...
Je viens de mettre MEDIUMTEXT pour éssayer et cela fonctionne
Question ? je viens de voir sur un post que l'on conseille de mettre BLOB pour ce type de champs ? c'est quoi ?
merci pour vos retours :)
Hey Grafikart,
Alors lors de l'enregistrement je serialize et ensuite j'encode
Puis lors de la récupération de donnés , je decode pour unserialisé
D'habitude je save directement mon serialize en BDD mais justement j'ai vu sur le net qu'en fesant un decode64 on palier le problème que je rencontre c'est à dire => unserialize(): Error at offset 49147 of 49151 bytes
source = http://davidwalsh.name/php-serialize-unserialize-issues
Oups désolé j'ai voulu vulgariser en pensant que cela était plus compréhensible...
je reprends:
Pourquoi tu utilises serialize alors que tu travailles avec du JSON ? JSON est déjà un format serialisé. Pourquoi tu ne restes pas avec JSON ?
Maintenant que tu le dit ... c'est pour enregistrer les datas dans ma BDD mais je pense que l'on peut save directement le JSon ?
EDIT
Je viens de faire un test mais c'est que lorsque je balance mon json cela devient un tableau de l'autre coté d'ou mon serialize
Après tu parles de transfert AJAX entre 2 serveurs, ce qui ne veut rien dire
Ce que je veux direc'est que je travaille sur une SPA - AngularJS hébergé sur un serveur A, cette application travaille avec du json.
La sauvegarde se fait via un appel ajax qui envoie les données sur un serveur B avec un backoffice dev avec CakePhp
Sinon ton problème fait penser à un problème d'encodage
Je reste convaincu que c'est un problème de taille, j'ai effectué plusieurs test arrivé à 120 élément dans mon json, mon backoffice ne lit plus les données et affiche
mais c'est aussi peut etre un problème d'encodage ;)
unserialize(): Error at offset 49147 of 49151 bytes
Pour l'exemple des datas
Le json créé par l'appli SPA
grid15: Object
id: 21
json: Object
i15-3-4: Object
element: "i15-3-4"
idModule: "34"
img: "url image"
price: "25"
referenceCouleur: "#FFFFFF"
referenceModule: "1515-EPL-WHIT"
rotation: "90"
taille: "15"
x: "3"
xy: "3-4"
y: "4"
i15-3-5: Object
i15-3-6: Object
**** ici c'est une liste qui se répéte pour X éléments ******
name: 'save test'
user_id: "1"
la save en bdd
serialisé + encode 64
YToxMjQ6e3...jc6IiN
le debug() sur Cake
unserialize(): Error at offset 49147 of 49151 bytes
si je dépasse 120 élément sa plante d'ou mon idée que le Json est peut etre trop grand pour passer par http...