Всем доброго времени суток. С помощью этой статьи: https://www.8host.com/blog/sozdanie-i-ispolzovanie-izobrazhenij-webp-dlya-uskoreniya-sajta/ Я конвертирую свои изображения на сайте в формат .webp. Есть два скрипта которые выполняются по крону:
bash /webp-convert.sh /home/admin/web/ 5 2 * * *
#!/bin/bash
converting JPEG images
find $1 -type f -and ( -iname «*.jpg» -o -iname «*.jpeg» -o -iname «*.JPG» -o -iname «*.JPEG» )
-exec bash -c ’
webp_path=$(sed ‘s/.[^.]*$/.webp/’ <<< «$0»);
if [ ! -f «$webp_path» ]; then
cwebp -quiet -q 90 «$0» -o «$webp_path»;
fi;’ {} ;
converting PNG images
find $1 -type f -and ( -iname «*.png» -o -iname «*.PNG» )
-exec bash -c ’
webp_path=$(sed ‘s/.[^.]*$/.webp/’ <<< «$0»);
if [ ! -f «$webp_path» ]; then
cwebp -quiet -lossless «$0» -o «$webp_path»;
fi;’ {} ;
bash /webp-watchers.sh /home/admin/web/ 5 3 * * *
#!/bin/bash echo «Настройка часов.»;
watch for any created, moved, or deleted image files
inotifywait -q -m -r –format ‘%e %w%f’ -e close_write -e moved_from -e moved_to -e delete $1
| grep -i -E ‘.(jpe?g|png)$’ –line-buffered
| while read operation path; do
webp_path=«$(sed ‘s/.[^.]*$/.webp/’ <<< «$path»)»;
if [ $operation = «MOVED_FROM» ] || [ $operation = «DELETE» ]; then # если файл перемещен или удален
if [ -f «$webp_path» ]; then
$(rm -f «$webp_path»);
fi;
elif [ $operation = «CLOSE_WRITE,CLOSE» ] || [ $operation = «MOVED_TO» ]; then # если создается новый файл
if [ $(grep -i ‘.png$’ <<< «$path») ]; then
$(cwebp -quiet -lossless «$path» -o «$webp_path»);
else
$(cwebp -quiet -q 90 «$path» -o «$webp_path»);
fi;
fi;
done;
Все хорошо работает, но есть одна проблема. Иногда бывает что при загрузки пользователем изображения копия .webp создается битой. Я предполагаю что конвертация происходит до того как изображение полностью загружено, возможно это не так. Мой вопрос, в чем может быть проблема, и для тестирования, как заставить inotify-tools выполнять с небольшой задержкой, это бы исключило мою теорию. Всем заранее спасибо за помощь.