Exécution d'une commande serveur depuis site WordPress

Bonjour,

J’exécute en local la commande suivante de l’outil ImageMagick pour compresser les images à téléverser sur un site WordPress :
mogrify -resize 1920x1080\> -density 72 -quality 82 *.jpg

Je cherche à automatiser cette tâche.

Plutôt que d’installer une extension de compression d’images qui laisse une copie de ces images originales en version non compressée sur le serveur, je me demandais s’il était possible d’insérer ce bout de code au site WordPress, pour que la compression se fasse sur le serveur, et que seule l’image compressée soit conservée.

Est-ce que le serveur est en mesure d’exécuter cette commande ?

Si oui, je n’ai pas encore cherché de quelle manière insérer le code dans WordPress, alors si vous savez, je suis preneur aussi. :smiley:

Merci !

@Guillaume

nécessite imagemagik sur la machine bien sûr
je complète : on a le choix entre le module php imagemagik, s’il est pas là on peut chercher avec la ligne de commande - en général le /usr/bin proposé est le bon … s’il est installé ofcourse

2 « J'aime »

Merci pour la suggestion. :slight_smile:

Si je comprends bien, cette extension remplace l’outil WordPress utilisé par défaut, mais le comportement reste le même : l’image non compressée reste stockée sur le serveur.

Après quelques recherches, cette page semble intéressante :

Il est question de déposer un script sur le serveur, à exécuter à intervalles réguliers :

#!/bin/bash

# Simple image compression script by Servebolt
# Version 1.0, November 22 2019

# Set the full path to your website home directory below

HOMEDIR="/full/path/to/website/homedir/"

# Compress all non-compressed .jpg and .png images

cd $HOMEDIR
nice -n 19 find . -iname '*.jpg' -print0 | xargs -0 jpegoptim --max=82 --all-progressive --strip-all --preserve --totals --force
nice -n 19 find . -iname '*.jpeg' -print0 | xargs -0 jpegoptim --max=82 --all-progressive --strip-all --preserve --totals --force
nice -n 19 find . -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve

echo "Image compression done!"

C’est possible chez Ouvaton, je crois ?

Merci.

1 « J'aime »

Oui en effet le plugin conserve l’image de départ
Ça dépend quelle fréquence et quel nombre d’ajouts vous avez ; si c’est faible, supprimer par ftp la version lourde de l’image n’est pas monstrueux.
Sinon, pour le « cron », écrire à l’assistance me semble le mieux à faire. Je ne peux me prononcer (sauf sur le « echo » à la fin qui ne serait pas à garder ds ce contexte :smiley: )
Voilà

1 « J'aime »

Ce serait intéressant pour réduire en effet toutes les images présentes et ainsi gagner en espace disque et bande passante. Mais cela me semble assez contraignant si tout le monde veut aller de son script :slight_smile:

2 « J'aime »

Effectivement, le rédacteur de la page citée mentionne :

An important thing to note here is that image compression can be a very resource-heavy task. This is not something that you want to run all the time because it may cause your server to be overloaded and/or crash. The image compression script is setup to run with the lowest priority possible.
[…]
Finally, schedule the script for execution once a week. You will most likely not need to run it more frequently.

1 « J'aime »

Bonjour,

Un plugin comme WP Optimize (https://fr.wordpress.org/plugins/wp-optimize/) semble proposer un compression des images, avec une option pour ne pas conserver les images non compressés.
A priori l’inconvénient avec ce plugin c’est l’utilisation d’un service tiers pour réaliser la compression.

Bonjour,

Oui, et le même article donne plusieurs raisons de ne pas utiliser d’extension.

Une autre option : télécharger tous les fichiers via FTP, exécuter les commandes localement, puis téléverser le résultat en écrasant les fichiers existants.

Par curiosité : le serpent de mer du SSH chez Ouvaton permettrait l’exécution de ces commandes par chaque coopérateur, par exemple ?

Déjà testé ? J’essaierai bien…

Non, pas encore. Si j’expérimente, je rendrai compte ici même. :slight_smile:

1 « J'aime »

J’ai testé les trois commandes listées ci-dessous en local, en supprimant la partie nice -n 19 qui sert à diminuer fortement la priorité de la tâche.
C’est rapide pour un dossier web complet d’1,7 Gb pour les commandes jpegoptim, plus long (quelques heures) pour la commande optipng. Je suis descendu à 1,4 Gb. Mais que ce soit le temps ou le niveau de diminution, ce n’est représentatif de rien.

Ce serait plus pertinent de tester sur quelques images d’un site, au cas par cas, pour constater le gain de compression vs. la perte éventuelle de qualité d’image.

C’est en tout cas facile à mettre en place, ça évite effectivement l’installation d’une extension.

1 « J'aime »