[Résolu] Nombre de champs dans CCK.

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Hello,

J'ai voulu améliorer un type en créant cinq champs CCK supplémentaires. J'en ai 15 différents au total. Depuis, je galère. je n'arrive même plus à lancer mon site, j'ai d'entrée de jeux le message suivant :

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8388608 bytes) in /srv/d_amh-ct/www/adm.testct.be/htdocs/sites/all/modules/contrib/Formatage contenu/cck/includes/content.crud.inc on line 499

J'ai ajouté de la mémoire RAM (512M) de plus que les 256M qu'il y avait avant. Cela n'a rien changé.

Le pire c'est que la ligne question est un commentaire :

while ($instance = db_fetch_array($db_result)) {
    // Unserialize arrays.
    foreach (array('widget_settings', 'display_settings', 'global_settings', 'db_columns') as $key) { 
.....
  }

Bref, je tourne en rond et votre aide est la bienvenue.

EM

P.-S. Je suis chez Gandi

Version de Drupal : 
Tags : 

C'est la mémoire allouée à PHP qui est insuffisante (128 Mo d'après ton message d'erreur). Si ta page d'accueil est particulièrement lourde (Views complexes, nombreux nodes, etc) ou que ton site contient beaucoup de modules, 128 Mo ne seront pas suffisants. Tu peux augmenter la mémoire allouée à PHP dans ton fichier .htaccess ou directement dans le php.ini si tu y as accès.

hello,

Merci de me répondre.

php.ini : Je ne sais pas où il est, je n'y ai sans doute pas accès.
.htacces : J'ai mis php_value memory_limit 512M cela n'a pas marché. J'ai mis php_value memory_limit 1024M.

Du coup, je me retrouve avec un warning kilométrique et, en haut de ma page, le message suivant :

Warning: Got a packet bigger than 'max_allowed_packet' bytes query: INSERT INTO ctr_watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:"%error";s:12:"user warning";s:8:"%message";s:19806431:"Got a packet bigger than 'max_allowed_packet' bytes\nquery: UPDATE ctr_cache_content SET data = 'a:4:{s:11:\"field types\";a:7:{s:4:\"date\";a:4:{s:5:\"label\";s:4:\"Date\";s:11:\"description\";s:115:\"Stocker une date dans la base de données au format date ISO, recommandé pour des dates historiques ou partielles.\";s:6:\"module\";s:4:\"date\";s:10:\"formatters\";a:5:{s:7:\"default\";a:4:{s:5:\"label\ in /srv/d_amh-ct/www/adm.testct.be/htdocs/includes/database.mysqli.inc on line 135

J'ai vidé tout les cache dans la DB, en particulier ctr_watchdog. Rien y a fait. Je ne vois vraiment de qu'elles date il parle.

Une précision, mon site est assez limité, quelques modules mais pas views, un nombre limité de blocs, c'est cela qui me fait douter. Comment avec, juste 4 champs de plus, il faut passer de 128M à 3 fois plus.

Si tu as toujours des idées, elles sont les bienvenues

EM

Hello,

Je ne vous envoie pas la totalité du Warning, il est vraiment kilométrique : mais en voici le début.

Une précision, je ne sais plus accéder à mes pages, ni me connecter, je n'ai que ce ces deux messages.

user warning: Got a packet bigger than 'max_allowed_packet' bytes query: UPDATE ctr_cache_content SET data = 'a:4:{s:11:"field types";a:7:{s:4:"date";a:4:{s:5:"label";s:4:"Date";s:11:"description";s:115:"Stocker une date dans la base de données au format date ISO, recommandé pour des dates historiques ou partielles.";s:6:"module";s:4:"date";s:10:"formatters";a:5:{s:7:"default";a:4:{s:5:"label";s:11:"Par défaut";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:15:"format_interval";a:4:{s:5:"label";s:19:"Comme Temps Ecoulé";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:4:"long";a:4:{s:5:"label";s:4:"Long";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:6:"medium";a:4:{s:5:"label";s:5:"Moyen";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:5:"short";a:4:{s:5:"label";s:5:"Short";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}}}s:9:"datestamp";a:4:{s:5:"label";s:9:"Datestamp";s:11:"description";s:125:"Stocker une date dans la base de données au format timestamp, format obsolète destiné au support des données historiques.";s:6:"module";s:4:"date";s:10:"formatters";a:5:{s:7:"default";a:4:{s:5:"label";s:11:"Par défaut";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:15:"format_interval";a:4:{s:5:"label";s:19:"Comme Temps Ecoulé";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:4:"long";a:4:{s:5:"label";s:4:"Long";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:6:"medium";a:4:{s:5:"label";s:5:"Moyen";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:5:"short";a:4:{s:5:"label";s:5:"Short";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}}}s:8:"datetime";a:4:{s:5:"label";s:8:"Datetime";s:11:"description";s:173:"Stocker une date dans la base de données dans un champ datetime, recommandé pour des dates et heures complètes, qui peuvent avoir besoin de conversions de fuseau horaire.";s:6:"module";s:4:"date";s:10:"formatters";a:5:{s:7:"default";a:4:{s:5:"label";s:11:"Par défaut";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:15:"format_interval";a:4:{s:5:"label";s:19:"Comme Temps Ecoulé";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:4:"long";a:4:{s:5:"label";s:4:"Long";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:6:"medium";a:4:{s:5:"label";s:5:"Moyen";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}s:5:"short";a:4:{s:5:"label";s:5:"Short";s:11:"field types";a:3:{i:0;s:4:"date";i:1;s:9:"datestamp";i:2;s:8:"datetime";}s:15:"multiple values";i:1;s:6:"module";s:4:"date";}}}s:4:"text";a:4:{s:5:"label";s:5:"Texte";s:11:"description";s:45:"Enregistre le texte dans la base de données.";s:6:"module";s:4:"text";s:10:"formatters";a:3:{s:7:"default";a:4:{s:5:"label";s:11:"Par défaut";s:11:"field types";a:1:{i:0;s:4:"text";}s:15:"multiple values";i:1;s:6:"module";s:4:"text";}s:5:"plain";a:4:{s:5:"label";s:12:

Hello,

Merci de prendre la peine de me répondre.

En fait, j'ai déjà cherché, mais si je peux effectivement tenter de mettre un paquet plus grand, rien ne me dit pourquoi ce paquet apparait, ni pourquoi, le fait d'avoir ajouté quelques champs CCK provoque de telles réactions.

Encore moins pourquoi, 5 champs de plus nécessite 512M De mémoire RAM supplémentaires... Dans les réponses, il y a quelqu'un qui a eu le problème à l'import de la traduction du module "_l10n_update_batch_download", personnellement, je n'ai activé, et désactivé, que CCKJJMMHH. ça n'a pas l'air d'être cela.

Bref, comme on dit en médecine, je n'ai pas envie de traiter le symptôme et de masquer le problème.

Il y a autre chose, et je galère.

EM

Il ne s'agit pas de RAM, mais de la taille des paquets MySQL (base de données).

Il faut déjà savoir si tu peux modifier ce paramètre (à mon avis pas possible en hébergement mutualisé).
Ensuite, vu le warning, c'est le CCK date qui n'a pas l'air optimisé et qui tente de mettre dans les tables de cache une quantité phénoménale de données, ce qui "explose" la taille des paquets transmis à la base de données.

Le détail de la requête est donné dans le warning. En fait Drupal "sérialise" les données, c'est à dire qu'il concatène toute une série de données dans une seule ligne de la base de cache, et à mon avis là il fait une indigestion...

Si tu as un accès à la base, tu peux faire un

SHOW VARIABLES LIKE 'max_allowed_packet'

Plus d'infos là : http://drupal.org/node/321210

hello,

Merci de répondre

Excusez-moi, je sais qu'il ne s'agit pas de RAM dans ce dernier message, mais le problème n'est pas ce dernier message que je n'ai mis que pour le cas ou quelqu'un comprendrait le contenu du paquet trop gros. J'avais vu cet article, je vous promets, juré, craché, j'ai cherché.

Le problème est que depuis l'ajout de 5 champs CCK, ce qui porte au total à 15 le nombre de mes champs CCK, plus rien ne marche. Je peux juste laisser mes utilisateurs voir le site actuel, je ne peux même plus créer un node.

Au départ, il m'a dit que je manquais de mémoire RAM, j'ai du en rajouter 512M pour pouvoir remettre mon site ne fonction en mode consultation. Mais cela ne suffit toujours pas pour supprimer ces 5 f****u champs.

Je crains que ma base de données soit vérolée et je ne sais pas quoi faire. Je ne peux même pas restaurer à partir d'un backup, elle est plus grosse que les 2M fatidiques, elle fait 2,5M. J’espère que mon hébergeur va m'aider, mais ??

Et surtout, tant que je n'ai pas trouvé l'erreur, je ne sais pas si le problème est résolu.

EM

Hello,

Bonjour, une bonne nuit de sommeil et je reprends un peu d'espoir.

J'ai vidé le cache, mais la première manifestation du problème a été que je ne pouvais plus accéder aux champs. Si je vais dans « type de contenu » -> « gérer les champs », ou « type de contenu » -> « afficher les champs », j'ai un message : Fatal error: Maximum execution time of 30 seconds exceeded in .../cck/includes/content.crud.inc on line 501

Attention, je ne pense pas que ce soit un problème de manque de temps. C'est de nouveau la même question, j'ai cela depuis ces 5 champs. J'ai augmenté mes ressources, de manière importante, cela n'a rien changé.

Quelque part, quelque chose boucle, dans doute, vous avez raison autour d'une date. Je n'avais pas utilisé CCK date, mais cck_hhmmss.

La chronologie est la suivante 

  • J'ai créé trois champs avec le format cck_hhmmss (plus deux en texte mais qui ne me paraissent pas être le problème).
  • j'ai commencé à avoir des problèmes dont la première manifestation a été de ne pas pouvoir les exclure du $content, je voulais faire un template spécifique.
  • Je l'ai ai alors supprimé (normalement) pour les recréer en mode texte. j'ai pu les créer.
  • Depuis je ne peux plus accéder au niveau champ d'aucun type, j'ai ce quelque chose qui boucle.
  • Si je tente de créer un node de ce type, j'ai bien les champs textes, mais ils ne s'enregistrent pas.

Au moment où tu as envoyé ton message, je regardais la base de données, elle est bien incohérente, je n'ai pas de table « field » pour ces trois champs dans la base de données.

  • En tout cas cela explique que mon encodage ne soit pas pris en compte.
  • Est-ce cela qui provoquerait le bouclage ?

Si je regarde mes backups quotidiens

  • Celui de ce jour où j'ai créé ces champs en cck_hhmmss et les ai supprimés me donne une base de taille nulle et m'indique une erreur.
  • Ce n'est plus le cas hier, j'ai bien un backup, mais il y a cette incohérence logique qu'est cette absence des trois tables field.

Bonne journée

EM

Hello,

Oui sans doute, on ne m'y reprendra plus de si tôt d'essayer de nouveaux modules.

Je l'ai desactivé au moment ou j'ai supprimé les champs de ce type et que j'ai constaté que ceux en mode texte ne marchait pas.

Par contre, comme restaurer la cohérence de ma DB ?

Est-ce que quelqu'un sait ou trouver, de préférence en français, le dessin des nodes ?

EM

Tu as bien tout nettoyé ce qui vient de ce module? Je vois sur un autre post que tu as toujours des problèmes mémoire.
Sur un de mes sites, j'ai environ 50 champs cck, sans problème, et mon serveur est vraiment configuré au minimum concernant la mémoire etc.

Hello,

J'ai beaucoup nettoyé, j'ai rendu à ma base de données sa cohérence en supprimant le champ problématique, mais mes problèmes de performances restent, je cherche encore.

Je viendrais clôturer ce post en disant ce qui s'était passé, si je trouve.

En attendant, je propose de continuer sur l'autre post pour éviter les incohérences.

Merci de ton intérêt

EM

Hello,

Juste pour donner l'info et clôturer le point.

Je ne sais pas exactement comment, je n'ai pas réussi à reproduire la situation, un de mes champs CCK a mal été enregistré ou mal défini dans la base de données.
Cela a provoqué un accroissement important de mes pages. Celles-ci sont devenues énormes (100M) et les performances ont diminué de manière importante.

Pour récupérer une situation, j'ai dû supprimer le type dans lequel était mon champ mal enregistré.

Pour ceux qui pourraient avoir des problèmes et voudraient estimer les tailles normales :

  • Un type supplémentaire provoque un accroissement des pages de 3M
  • Un champ imagefield simple supplémentaire avec une image de 800k, provoque un accroissement de 2,5M
  • un champ multimédia, un accroissement de 20M

Merci de votre aide

EM