Comment identifier les problèmes de limite de mémoire PHP dans PrestaShop

Votre liste de produits s'affiche sur une page blanche. L'importation s'interrompt à la ligne 4,300 4,300, et ce, de nouveau à la même ligne lors de la tentative suivante. Une photo est téléchargée sans problème, mais aucune vignette n'est générée. Trois personnes signalent trois problèmes différents, et une seule et même cause est à l'origine de tous ces problèmes.

La cause ? La mémoire. Tant qu’un problème persiste, la plupart des commerçants ne s’y intéressent pas, et une fois le problème survenu, ce paramètre est accusé de nombreux dysfonctionnements qu’il n’a jamais causés.

Ce qui suit explique comment identifier les problèmes de limite de mémoire PHP dans PrestaShop, comment confirmer qu'il s'agit bien du problème et quelles sont les solutions à adopter. Certaines vérifications peuvent être effectuées par vous-même ; pour les autres, il convient de contacter votre hébergeur.

1.0 Ce que représente réellement la limite de mémoire PHP

PrestaShop est écrit en PHP. À chaque chargement de page, un script s'exécute pour la générer, et la variable `memory_limit` limite la quantité de mémoire que ce script peut utiliser.

Cette limite s'applique à un seul script, pas à l'ensemble de votre site ni à l'ensemble de votre serveur, et presque toutes les confusions ici découlent de cette distinction. 

Le manuel PHP mentionne que la valeur par défaut de memory_limit est de 128 Mo.

Un serveur doté de 16 Go de RAM peut donc tomber en panne à 128 Mo. Personne ne ment sur les capacités matérielles : PHP impose sa propre limite, bien inférieure à ce que la machine peut supporter, et interrompt le script dès qu'elle est atteinte. Avoir beaucoup de mémoire disponible et recevoir un message d'erreur de mémoire insuffisante dans PrestaShop est une situation courante, et une erreur de mémoire insuffisante de PHP dans PrestaShop signifie la même chose.

Il y a deux plafonds, et celui qui est le plus bas est celui que vous atteindrez. Ne touchez pas à la configuration PHP et n'ajoutez pas de RAM : rien n'y fait. D'où la déception quand « il suffit de passer à un forfait d'hébergement supérieur » ne résout rien.

Plan d'hébergement 2.0 par rapport à la limite de mémoire du serveur PrestaShop

Côte à côte, la différence est plus claire :

Ce que c'estCe que cela limiteValeur typiqueQui le change ?
Limite de mémoire PHPChargement d'une page128 MB à 512 MBVous ou votre hôte, dans un fichier de configuration
RAM du serveurTout fonctionne2 Go à 32 GoVotre plan d'hébergement

Les deux sont importants, et la manière dont ils dysfonctionnent vous indique lequel est en cause. Si la limite PHP est atteinte, une page devient inaccessible, mais la boutique continue de servir les clients. Si la RAM est saturée, tout ralentit simultanément, y compris la base de données. Un site lent indique un problème de RAM ou de trafic ; une page cassée alors que les autres fonctionnent correctement indique un problème avec cet article.

3.0 Pourquoi la boutique PrestaShop devient-elle indisponible ?

Il existe une véritable explication au problème de mémoire insuffisante de PrestaShop, et « le logiciel est trop lourd » n'en est pas une. Gérer une boutique en ligne implique des tâches complexes qu'un site vitrine n'a jamais à effectuer. Quatre points sont à prendre en compte.

  1. Les données produit sont plus volumineuses qu'il n'y paraît.Chaque produit est accompagné de descriptions dans toutes les langues où vous le vendez, ainsi que de règles de prix, de catégories, de combinaisons et de stocks. Pris individuellement, cela ne représente rien. Mais si vous en demandez cinq mille d'un coup lors d'une exportation, les calculs changent rapidement.

2. La mémoire utilisée pour les images dépend de leurs dimensions, et non de leur taille : cela surprend souvent. Ouvrez une photo de 3 Mo de 6 000 pixels de large : elle nécessite environ 70 Mo avant tout redimensionnement. Le poids d’un fichier sur le disque ne reflète pas nécessairement son coût de traitement, ce qui explique pourquoi certaines photos sont affichées en miniature et d’autres non.

3. Chargement simultané des modules : Votre page d’administration charge et initialise tous les modules installés dès son chargement, y compris les quarante qui ne seront jamais utilisés à l’écran. Pris individuellement, ils coûtent peu. Une boutique établie en utilise soixante, et cela représente un coût bien plus important.

4. Votre interface d'administration est la partie la plus lourde : plus de données à l'écran, moins de raccourcis, et aucune mise en cache pour assurer la rapidité de votre boutique en ligne. Par conséquent, un problème de mémoire PHP sur PrestaShop vous impacte, vous et votre équipe, tandis que vos clients continuent d'utiliser votre boutique sans être affectés, ce qui rend le problème invisible pour ceux qui vous font payer.

4.0 Symptômes et messages d'erreur importants à reconnaître

Le message s'affiche parfois à l'écran et ressemble à ceci :

Erreur fatale : la mémoire allouée (134 217 728 octets) est insuffisante.
(Tentative d'allocation de 20 480 octets)

Considérons les deux nombres séparément. Converti en octets, 134 217 728 correspond à 128 Mo. Ce stockage utilisait donc la limite par défaut et l'avait entièrement atteinte. Il est bon de le savoir, car le message indique votre paramètre actuel.

Ce deuxième nombre est une fausse piste. Minuscule, il fait croire à un coupable, alors qu'il n'en est rien : il s'agit simplement de la dernière requête de mémoire, une fois toutes les autres épuisées. C'est le grain de sable dans l'engrenage. La plupart des e-commerçants cherchent à résoudre une erreur d'allocation mémoire PrestaShop en repérant ce nombre, mais cela ne mène à rien.

5.0 L'erreur de limite de mémoire PrestaShop que vous ne verrez jamais.

Les boutiques en ligne masquent les erreurs aux visiteurs, et c'est tant mieux. Tout élément technique visible sur votre boutique en ligne donne une impression de manque de professionnalisme et expose des informations confidentielles sur votre serveur. Résultat : même avec une configuration optimale, vous ne verrez rien d'utile.

Les erreurs cachées aux visiteurs ne vous laissent rien à lire

Au lieu d'un message, attendez-vous à recevoir l'un des suivants :

Une page blanche complètement vide, rien du tout dans le navigateur

Page d'erreur HTTP 500

Demi-page : le haut se charge, puis s’arrête, la mise en page est cassée.

Les exportations se téléchargent et s'ouvrent correctement, mais il manque des lignes à la fin.

Produits qui se téléchargent sans problème et n'affichent jamais de miniature

La page blanche est le cas classique, et le moins utile : rien à lire, rien à coller dans un champ de recherche.

6.0 S'assurer qu'il s'agit bien de mémoire

Vérifiez le diagnostic avant toute modification des paramètres. De prime abord, ces deux problèmes semblent identiques ; seul l’un concerne la mémoire, et leurs solutions sont totalement différentes.

Le message d'erreur indiqueLe problème estLa solution implique
Taille de mémoire autorisée… épuiséeLimite de mémoire PHPlimite de mémoire, voir ci-dessous
Durée d'exécution maximale… dépasséeUne limite de temps, pas de la mémoiremax_execution_time

Même page blanche dans les deux cas. Demandez à votre hébergeur le journal d'erreurs PHP correspondant à l'heure de l'incident ; c'est là que le message d'erreur s'affiche lorsque rien ne s'affiche. Une simple demande vous évitera bien des tâtonnements.

7.0 Comment vérifier la limite de mémoire PHP dans PrestaShop

La limite de mémoire PHP actuelle peut être vérifiée directement dans l'interface d'administration de PrestaShop et ne nécessite pas d'accès au serveur.

Rendez-vous dans les Paramètres avancés , puis dans Informations , où vos paramètres PHP sont listés, notamment la limite de mémoire. Cette limite affecte à la fois la boutique et le panneau d'administration. C'est donc le paramètre à vérifier en premier.

Il est important d'éviter toute confusion. Les flux et les importations s'exécutent généralement pendant la nuit selon une planification, et ces tâches utilisent souvent une configuration mémoire différente de celle de votre site web. Vous constatez une quantité correcte dans l'interface d'administration ; l'importation échoue malgré tout. Même serveur, deuxième configuration. Signalez-le à votre hébergeur.

8.0 Comment augmenter la limite de mémoire PHP dans PrestaShop et corriger les erreurs de mémoire insuffisante

La configuration système requise pour PrestaShop est de 256 Mo, et le programme d'installation effectue une vérification avant de vous laisser continuer.

Il existe plusieurs façons d'augmenter la limite de mémoire PHP dans les paramètres de PrestaShop. La méthode à utiliser dépend de la configuration de votre hébergement, et vous ne pouvez pas le déterminer en naviguant simplement dans votre boutique. Renseignez-vous ou vérifiez.

8.1 La solution la plus simple : demandez à votre hôte

Sur un hébergement mutualisé, la solution est généralement simple. De nombreux panneaux de contrôle proposent une interface de configuration PHP que vous pouvez modifier vous-même ; sinon, le support technique pourra vous aider. Voici un exemple :

Pourriez-vous augmenter la limite de mémoire à 256 Mo pour mon site ?
PrestaShop nécessite au minimum 256 Mo.

Si l'hébergeur refuse, nous devrons envisager d'autres options d'hébergement.

8.2 Si vous ou votre développeur avez accès au serveur

Une simple ligne dans un fichier appelé php.ini suffit :

memory_limit = 256M

Deux problèmes surviennent fréquemment et méritent d'être signalés. Un serveur héberge plusieurs fichiers php.ini, mais n'en lit qu'un seul. Par conséquent, une modification parfaitement correcte peut se retrouver dans un fichier inutilisé. Le second problème est le redémarrage : sur de nombreuses configurations, aucune modification n'est prise en compte tant que PHP n'a pas été redémarré.

8.4 La méthode .htaccess et pourquoi elle ne fait souvent rien

Faites une recherche en ligne et vous apprendrez à ajouter une ligne au fichier .htaccess, le fichier de configuration situé à la racine de votre boutique :

php_value memory_limit 256M

Parfois, ça fonctionne. Sur la plupart des hébergements modernes, ça ne fait rien, et sur certains, le site entier renvoie une erreur 500 car le serveur rejette cette instruction. 

N'essayez cette solution qu'en dernier recours, et seulement si vous pouvez facilement annuler la modification.

Une particularité de cette plateforme est à noter : l’enregistrement de vos paramètres d’URL entraîne la réécriture du fichier .htaccess par PrestaShop. Par conséquent, une ligne ajoutée manuellement peut disparaître sans avertissement. Vérifiez à nouveau le fichier après avoir modifié les paramètres SEO et les URL.

9.0 Vérification du bon fonctionnement de la modification

Croyez personne sur parole, pas même vous. La vérification prend environ deux minutes :

Retournez dans Paramètres avancés, puis Informations. Le nombre a-t-il bougé ? Si la valeur reste à 128 Mo, cela signifie que la modification n’a pas été prise en compte, ce qui est de loin le cas le plus fréquent.

Répétez l'opération qui échouait auparavant. Si le paramètre indique 256 Mo et que la page ne s'affiche toujours pas correctement, cela signifie qu'un autre élément le remplace.

Videz le cache du magasin depuis Paramètres avancés, puis Performances.

Attendez quelques jours avant de considérer le problème comme résolu, car le résultat obtenu dépendra généralement de votre catalogue.

Lorsqu'un chiffre refuse de bouger, suspectez d'abord un fichier incorrect, puis un panneau de contrôle qui écrit sa propre configuration par-dessus ce qui a été modifié sur le disque.

9.2 Quand augmenter la limite est la mauvaise réponse

Bien souvent, c'est la bonne solution, car 128 Mo sont vraiment insuffisants pour un back-office PrestaShop moderne. Optez pour 256 Mo sans hésiter.

Au-delà de 512 Mo, il est temps de se poser une autre question. À ce stade, un processus consomme généralement de la mémoire proportionnellement à la taille de votre catalogue ; chaque augmentation de la mémoire permet donc d'ajouter quelques milliers de produits avant que le même problème ne se reproduise. Investir une heure de travail d'un développeur coûte moins cher qu'un serveur plus puissant chaque année.

Comprendre comment le problème est apparu peut nous aider à le cerner. Un problème apparu progressivement avec l'enrichissement du catalogue est un problème de code ou de données masqué par la mémoire. Un problème présent dès l'installation d'un module est inhérent à ce module. Enfin, un problème persistant, même sur un espace de stockage de 128 Mo, est tout simplement lié à la configuration.

Conclusion finale – Empêcher que cela ne se reproduise.

  • Atteignez 256 Mo et maintenez-les. C'est le minimum requis, pas un luxe.
  • Redimensionnez les photos volumineuses avant de les publier : la mémoire est consommée par pixel, et une largeur de 2 000 pixels convient à la plupart des magasins.
  • Désactivé ne signifie pas supprimé ; désinstallez donc ce que vous n’utilisez plus.
  • Planifiez les importations importantes en dehors des heures de pointe.
  • Répétez une importation importante sur une copie de test, jamais sur le magasin en pleine vente.
  • Demandez à votre développeur de consulter le journal des erreurs après l'échec d'une opération groupée, au lieu de supposer qu'elle a fonctionné.
  • Ce dernier point mérite toute notre attention. Une opération en vrac inachevée est pire qu'une opération ayant complètement échoué, car on ignore quelle partie a été menée à bien, et la lecture du journal prend du temps.

Voici le guide complet pour identifier les problèmes de limite de mémoire PHP dans PrestaShop. Chez Knowband, nous sommes spécialisés dans les plugins e-commerce, la personnalisation de sites web et le développement d'applications pour optimiser les performances de votre boutique. Besoin d'aide ? Contactez-nous à [email protected] ou via le service d'assistance Knowband ; nous sommes toujours ravis de vous aider.

Laissez un commentaire