Question aux pros de Kirby CMS !

J’ai fait un site avec beaucoup d’images volumineuses qui sont servies « à la bonne taille » par Kirby avec la fonction crop(). Jusque là super, sauf qu'en prod certaines images (pas toutes) ne sont pas prises en compte et je me retrouve avec quelques miniatures de 5333 px de large (et plus de 1 Mo) au lieu des 1000 px demandés, ce qui est évidemment hautement pénalisant.

Des idées sur ce qui se passe ?

(1/2)

Le site : https://hpaa.fr/

#kirbyCMS #php

En local (XAMPP de base) tout roule comme sur des roulettes, les versions de PHP sont identiques et a priori j’ai bien toutes les bonnes libs sur la prod (GD & co.).

J’ai mis l'hébergeur sur le coup (coucou @alwaysdata ❤️) qui semble dire que le processus réclamerait trop de RAM et s’arrêterait en route, et m'a conseillé d’uploader directement les images que j’ai en local dans /media… mais ça ne fonctionne toujours pas.

Mastodev, fais ta magie ? 🙃

(2/2)

@STPo @alwaysdata Peut-être essaye de supprimer le dossier /media pour que Kirby le regènère (une petite sauvegarde de /media avant au cas où ...)
@pixenjoy @alwaysdata Salut Gilles, oui je viens de le faire… sans résultat.
@STPo @alwaysdata J'imagine que tu as aussi essayé de vider le cache de ton navigateur et rechargé ta page ?
@pixenjoy Oui oui, ça le fait chez tout le monde et mon cache navigateur est désactivé par défaut…
@STPo Tu veux que je teste sur mon VPS avec une url de test ?
@pixenjoy Je ne sais pas ce que ça veut dire, mais je prends tout 😀
@STPo Tu m'envoies une copie de ton site dans un zip en utilisant https://www.swisstransfer.com/fr et je l'installe sur mon serveur (Virtual Private Server = un serveur dans le cloud que je loue et administre en admin) et je lui met une url de test aux fesses et on regarde si le bug se reproduit avec une bière et un saut de pop-corns dans les mains.
SwissTransfer - Envoi sécurisé et gratuit de gros fichiers

Envoyez jusqu'à 50 Go - Gratuit et sans inscription - Gardez vos transferts jusqu'à 30 jours.

Swiss Transfer
@STPo Ca pourrait nous dire si c'est une question d'environnement d'hébergement ou si c'est lié à ton site/Kirby
@pixenjoy Ah bah ouais go ! Et tu gagnes une bière-maroilles quand tu passes !
@STPo Deal mon chum !
@pixenjoy Et j’avais zappé que tu étais végane, du coup ce sera protéines de soja texturées…
@STPo Oui, j'ai fais ça pour faire chier les Masculinistes #HommeSoja
@pixenjoy Faut s’qui faut !
@STPo Si votre ampoule de plafonnier s'éteint par intermittence, c'est parce que je télécharge le ZIP de @STPo !
@pixenjoy La prochaine fois je fais ça sous SPIP.
@STPo @pixenjoy tenez nous au jus de l'issue du problème. J'ai fait plusieurs sites Kirby dont certains du genre avec des packshots uploadées sous forme d'images de plusieurs mo et j'ai jamais eu ce soucis... curieux de voir à quoi ça peut être dû, ocazou pour les prochains projets
Avec @pixenjoy au commande ca devrait le faire.
@Julianoe @pixenjoy Ça marche très bien sur le serveur de test de Gilles en tout cas… je suis à court d'idées.

@STPo @pixenjoy si je comprends bien ton hébergeur dit que ça peut prendre beaucoup de ram. Est-ce que tu as accès à des logs d'erreur ?
Si c'est en effet cela le problème tu devrais avoir une erreur du genre "Fatal error: Allowed memory size of x bytes exhausted"

Si tu as accès la config PHP/Apache tu peux essayer d'augmenter la limite "memory_limit". Poser un phpinfo() en local et en ligne pour voir si ce paramètre est le même sur les deux pourrait aider

@STPo @pixenjoy si mettons ton serveur renvoie memory_limit = 64mo et ton local XAMP memory_limit = 256mo ça expliquerait déjà la différence entre les deux.
Tu configures XAMP pour avoir la memory_limit identique à ton serveur.
Si ça foire désormais en local, c'est bien que c'est probablement ça le problème.

La reco dans ces cas là des devs de Kirby semble en effet de basculer sur l'utilisation de ImageMagick car ce module sait mieux gérer les images très lourdes.

@STPo @pixenjoy ça date d'une version ancienne de Kirby mais ce thread de forum décrit exactement le même problème que ce que tuas j'ai l'impression et c'est en effet un problème de mémoire qui semble être le coupable https://forum.getkirby.com/t/potential-memory-leak-or-am-i-just-using-too-large-files/4870/13
Potential Memory leak or am I just using too large files?

@Thiousi Kirby is using imagemagick from the command-line, rather than PHP’s Imagick-extensions. so imagemagicks binary convert has to installed on the server. @JIrving In order to make it work, you probably need to set the correct path to convert in config.php in addition to changing the driver. See: https://getkirby.com/docs/cheatsheet/options/thumbs-bin

Kirby Forum

@STPo @pixenjoy ça me parait bizarre parce qu'en utilisant ton fichier source m11-site-bd-1.jpg qui fait 1.7mo et qui ne passe pas sur ton site, même en limitant la memory_limit et max_memory_limit à 16M, en faisant un crop en 1000x750, ça fonctionne.

Si je descend à 8M, j'ai un crash à cause de la mémoire : mais le site crash complètement avec une erreur (si debug=true j'ai bien une erreur "allowed memory").
Par contre je n'ai pas le fichier qui passe sans être process.

@STPo @pixenjoy pour débugguer plus il faudrait voir comment la fonction est appelée etc.

@Julianoe @pixenjoy Merci pour tout ça, j’avais déjà testé pour memory_limit, j’ai forcé à 512 mais ça ne change rien…

J'ai bien accès aux logs mais je n'y comprends pas grand-chose… En gros il y a du timeout et du brun sur « mod_fcgid », et aussi du « fatal Error Unable to create lock file: Disk quota exceeded » (peut-être ça ?).

Merci pour le lien du forum, je redoutais de bricoler avec ImageMagick…

@Julianoe @pixenjoy Trop de points de suspension dans ce post pardon.
@STPo @pixenjoy disk quota exceeded: tu as combien d'espace disque libre sur ce serveur/hébergement ?
ça me semblerait étrange que ce soit ça car tu as bien un nouveau fichier qui est créé (avec les dimensions dans le nom)
@Julianoe A priori je suis large de ce côté-là.

@STPo tu as vérifié avec memory_limit mais max_memory_limit est de combien ?

Mais ça ne me semble pas être ça de ce que tu me dis sinon tu aurais des erreurs en référence à cela dans les logs.

@STPo ta fonction qui crop ressemble à quoi ?
@Julianoe Ah pardon. Je regarderai quand-même quand je reprendrai la main dessus.
@STPo @Julianoe En prod, regarde dans /content dans le dossier du projet qui contient l'image qui pose problème, si il y a pas un fichier .lock qui traine. Faut autoriser l'affichage des fichiers cachés pour le voir. Si tu le vois, supprime le et retest.
@STPo @Julianoe j'ai peur qu'il ne faille prévenir l'armée, un porte avions ou deux devrait suffir !
@STPo Dans quel format sont converties les images ? Et as-tu essayé avec Imagick ? J'avais le problème avec le format avif.
Les file blueprints permettent de réduire la taille originale lors de l'upload (de mémoire depuis la v4)
@sylvainallignol c'est du jpg tout du long. Non je n'ai pas essayé avec imagick que j'ai vu passer dans les forums Kirby, ça me semble plus complexe et je ne suis pas sûr d'avoir les épaules...
@STPo c'est pas forcément compliqué. Le site est chez quel hébergeur ?
@sylvainallignol always data
@STPo sans installer Imagick, je ne vois que 2 solutions :
- Kirby CLI et le plugin Janitor qui permettent de générer les miniatures en SSH, et son s'affranchir de certaines limites de PHP
- ou créer une page cachée Kirby (avec pagination de 100 par exemple) qui affiche toutes les images du site dans le plus petit format pour détecter celles qui ne sont pas redimentionnées.
Quand j'avais eu ce problème (chez o2switch), j'avais un petit pourcentage d'images touchées. Ça permet de ne reuploader que celles-ci
@sylvainallignol je ne connais pas les file blueprints, par contre reupload les 3000 images ça va pas être fun 😅