Vous voulez poster un looooong billet sur votre blog Wordpress. Vous copiez-coller le pavé depuis votre éditeur de texte comme d'habitude, vous voulez enregistrer votre brouillon (ou publier) et là, Wordpress ne dit rien et retourne à la liste des billets. Sans enregistrer votre billet ... Vous enlevez quelques dizaines de paragraphes : ça passe ... Problème de longueur de billet.
Ai-je atteint les limites de MySQL ? Non. Wordpress utilise le type « longtext » pour la colonne « post_content » de la table « wp_posts ». Si l'on regarde ici :
https://dev.mysql.com/doc/refman/5.0/fr/string-type-overview.html, on voit que « Une colonne LONGTEXT ou LONGBLOB peut contenir au maximum 4294967295 ou 4 Go (2^32 − 1) caractères. [...] Depuis les versions 4.x, la taille maximale d'un LONGTEXT ou LONGBLOB dépend de la taille maximal de paquet de communication pour le protocole de communication, et de la mémoire disponible. »
Donc l'origine du problème est plus à chercher du côté de PHP :
- Cela ne peut pas être « max_execution_time » (temps max d'exécution d'un script) car le script s'execute 5 secondes avant de retourner sur la liste des billets alors que ce paramètre est fixé à 30.
- Cela ne peut pas être « max_input_time » (temps max de parse des variables d'entrée) car le script s'exécute 5 secondes alors que ce paramètre est fixé à 60.
Le problème vient de « post_max_size » qui vaut « 8M » par défaut mais que j'avais descendu à 256K puisque je n'ai pas besoin de traiter de gros volumes en entrée. Mais il se trouve que cette fois-ci, mon billet explose de quelques ko cette limitation.
Passer « post_max_size » à 300K résout le problème.