Nombre de persist() possible ?

Par android38, il y a 11 ans


Bonjour

Dans mon controller j ai un tableau avec 13235 objets .
Lorsque je fais ça :

foreach ($cis as $key => $value) { $em->persist($value); $em->flush(); $em->clear() }

J'ai 2563 lignes sur les 13235 qui se créent dans la base.

Du coup j 'ai essayé de faire le flush moins souvent avec ce code :

foreach ($cis as $key => $value) { $em->persist($value); if ($key % 300 == 0) { $em->flush(); $em->clear(); } } $em->flush();

Et la peu importe ce que je mets comme chiffre a la place du 300,je n'ai que 4500 enregistrement sur les 13235 en base.

Quelqu 'un aurai une idée d'ou celà peut venir ?? il y a t'il un limitation ?

dans les logs les 4500 lignes sont ecritent en 8 à 9 seconde.

Merci par avance.

1 réponse

android38, il y a 11 ans

C'est bon j'ai trouvé la solution.

le code suivant fonctionne très bien des le départ :

foreach ($cis as $key => $value) { $em->persist($value); } $em->flush();

Il fallait juste augmenter la variable max_allowed_packet.

J'espère que ça en aidera d'autre