В тази публикация на „Съвети от support- a“ ще намерите насоки и препоръки за оптимизация на вашите приложения, обединени в 2 точки. Роси от отдел Техническа поддръжка в нашата хостинг компания СуперХостинг.БГ споделя един интересен казус, за решаването на който е помогнала наскоро. Научете повече как да реализирате преконвертирене на файлове от един формат в друг, като съответно използвате най-оптимално сървърните ресурси на избраната хостинг услуга. Надяваме се информацията да помогне и за оптимизацията на ваши приложения. Разбира се, очакваме да споделите и допълните темата с още предложения от вашия опит… Какво друго решение ще препоръчате вие? 🙂
Клиент разполага в хостинг акаунта си при нас скрипт за конвертиране на файлове от PDF формат в JPG. Реализацията е с bash скрипт, чрез който става преконвертирането. Скриптът се стартира на няколко минути чрез cron задача.
Проблемът:
В скрипта не се прави проверка дали изображенията вече са преконвертирани. При малък обем от файлове, процесът минава бързо и видимо безпроблемно, но не и оптимално. При нарастване броя на файловете, преконвертирането, на практика, е непрекъснато и оказва сериозно влияние върху изразходваните сървърни ресурси (процесорно време – CPU). Това не зависи от избраното хостинг решение – споделен хостинг, виртуален сървър (VPS), нает сървър (dedicated server) или по-сложна хостинг реализация. При всеки случай са необходими оптимизации. Това ще спомогне за коректното и оптимално функциониране на процеса за конвертиране, без да има неблагоприятно влияние върху нормалната работа на други приложения.
Решението:
Съществуват много и различни начини за оптимизация. Практиката от комуникацията с клиентите показва, че най-удачните за тях решения са тези с максимално опростена реализация спрямо вече наличната функционалност. Това са решенията, които се реализират с възможно най-малко промени в начина на текущата работа на приложенията.
Предложените от наша страна решения:
1. Да се допише bash скрипта, като се включи проверка дали съществува вече определено изображение. Ако го има, то съответния PDF файл да не се преконвертира.
|
Bash скриптът – script.sh:
#!/bin/bash for i in `find $PDFDIR -type f -iname „*.$ORIG_EXT“`; do FILE_TEMP=`basename $i` if [ -d „$IMGDIR“ ]; then |
* IMGDIR=“/home/cpanelusername/path/to/folder/img“ – директорията, в която се намират JPG файловете;
2. Обработката на файлове да се извършва веднъж, например при качване на файла. Ние препоръчваме да се разположи upload форма, която при качването да преконвертира файловете в JPG формат.
|
Възможна реализация е чрез извикване на същия bash скрипт, след upload на PDF файлoвете. Във формата се добавя следния ред:
exec(„/home/cpanelusername/path/to/script.sh“); |
За реализацията на upload формата има много насоки и примери и в Интернет пространството. От съображения за сигурност на вашите приложения, ви препоръчваме да използвате рестрикции (максимален размер, тип) за качваните файлове и защита на upload формата с парола.
Примерна Upload форма може да видите >>тук>> |
* dir => „pdf/“ – директорията, в която ще се качват PDF файловете (името трябва да съвпада с това в bash скрипта);
* name => „docs“ – име, което се вижда във формата;
* password => „docs“ – парола, която трябва да се въведе преди качване на файла;
Споделете като коментар под тази публикация случаи и от вашата практика, в които сте реализирали преконвертиране на файлове? Какво решение сте използвали? Ще се радваме да допълните темата с още полезни съвети, въпроси или интересна информация! 🙂