Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Как автоматически удалять картинки из папки с кэшем?


Smallbear

Recommended Posts

Уже столько версий опенкарта , а эта проблема все еще остается,неужели все вручную удаляют копии картинок?

Я так понимаю нужно какой-то скрипт написать который просто будет через определенный период очищать папку с кешем картинок,если программно это довольно сложно в сам движок вставить.

Может кто-нибудь может написать такой скрипт

Надіслати
Поділитися на інших сайтах


крон если хостинг держит ссш

такие фразы я уже встречал,вот если бы кто-то подробно хоть раз написал что и как нужно сделать было бы очень хорошо

Надіслати
Поділитися на інших сайтах


А зачем это надо?

что именно , зачем удалять кэш или зачем обьяснять как это сделать?

удалять нужно потому что , если много товаров , то кэш много места будет занимать.

Ну а чтобы кто-то обьяснил не мешало бы т.к. начал я читать про этот крон и ничего совсем не понял. Поэтому прошу помощи :unsure: :unsure: :unsure: :unsure:

Надіслати
Поділитися на інших сайтах


Это у вас больше от скуки, чем от лени =)

Только что искал ТАК и на ТРЕТЬЕЙ ССЫЛКЕ уже прекрасно себе представлял, как это делается.

У меня на магазе кеш немного пожирает, посему об этой проблеме не задумывался, а у заказчиков хостинги "резиновые", поэтому не парятся))))

Да. А уж как у вас крон "включается" - это от панели управления зависит))

В таком случае помогут запросы "крон си-панель" или "крон-айыспимэнэджэр" ;)

  • +1 1
Надіслати
Поділитися на інших сайтах

Это у вас больше от скуки, чем от лени =)

Только что искал ТАК и на ТРЕТЬЕЙ ССЫЛКЕ уже прекрасно себе представлял, как это делается.

У меня на магазе кеш немного пожирает, посему об этой проблеме не задумывался, а у заказчиков хостинги "резиновые", поэтому не парятся))))

Да. А уж как у вас крон "включается" - это от панели управления зависит))

В таком случае помогут запросы "крон си-панель" или "крон-айыспимэнэджэр" ;)

по запросу "крон удалить файлы" мне как-то и в голову не пришло искать,т.к. думал это далеко не основная задача этого крона))

я вот тут темку нашел на форуме https://opencartforum.com/topic/290-объём-кеша-картинок-больше-самого-магазина/page__p__1806__hl__кэш__fromsearch__1#entry1806

меня заинтересовала вот эта строка

Я делаю через крон самой ОС команда

rm -f /shop/image/cache/data/ *.jpg

я что-то не совсем понял ОС тут имеется наверно ввиду операционная система?или все-таки имели ввиду Opencart. Из этого вопрос где на локальном комьютере (в самом виндовс или опенкарте) находится крон?:)

понимаю,что вопросы может и глупые,но уже очень поздно соображаю плохо может кто подскажет?))есть подозрение что это кнопочка "выполнить" , но не понятно что туда написать чтобы проверить.

P.S. На хостинге вроде нашел этот крон, но там еще нужно разобраться что прописывать. Вроде как путь к пхп файлу со скриптом,ну а остальное минуты выполнения ,дни и т.д. там вроде просто прописываются.

Надіслати
Поділитися на інших сайтах


Под виндой это Пуск -> Панель управления -> Назначенные задания :)

Не знаю, правда, для чего это может пригодиться, если магазин на локале висит...

Надіслати
Поділитися на інших сайтах

Вобщем проблему решил примерно на половину

на хостинге ситуация следующая

Изображение

т.е. как я понял SSH доступа на хостинге нет и просто какую-то команду в строку "задача" я не могу ,а могу только прописать путь к файлу ии может я не прав?

Но суть не в этом,можно и путь к фалу со скриптом прописать , только сам скрипт никто не поможет дописать?

<?php foreach (glob("*.jpg") as $filename) { 
   echo "$filename size " . filesize($filename) . "n"; 
   unlink($filename); 
} ?> 

вот такой скрипт вставленный в папку image\cache\data работает,но он удаляет только файлы jpg которые находятся в папке data.А те картинки которые создаются во вложенных папках он не трогает.

У меня созданы папки для категорий товаров т.е. примерно такая структура

image\cache\data\папка_для_товаров_категории_№_1

\папка_для_товаров_категории_№_2

\папка_для_товаров_категории_№_3

\просто_картинки_без_папок

Как переписать скрипт , чтобы удалял картинки в папке data , не только в корне , но и во вложенных файлах?

Или например вообще чтобы удаляло все,что в папке data

Надіслати
Поділитися на інших сайтах


Сформулирую вопрос немножко по другому:

Люди помогите пожалуйста написать функцию которая удаляет определенную папку вместе со всем ее содержимым?(чтобы удаляла не только все файлы , но и вложенные папке со всем содержимым)

Надіслати
Поділитися на інших сайтах


Да не надо тебе ни каких функций, попроси хостера что-бы тебе подсказали как с помощью cron'а очищать директорию... там одна команда.

Надіслати
Поділитися на інших сайтах

Да не надо тебе ни каких функций, попроси хостера что-бы тебе подсказали как с помощью cron'а очищать директорию... там одна команда.

Я скрин выше показывал,как я понял там можно только путь прописать к скрипту на сервере..Да и всеравно хотелось бы знать какой скрипт может сделать то что мне нужно,а то уже из гугла кучу попробовал и ничего не работает или пробую как-то не так.Максимум ,что получается это удаление всех файлов в папке со скриптом,но при этом и скрипт удаляется,а вот вложенные папки всеравно остаются.

Надіслати
Поділитися на інших сайтах


<?php foreach (glob("*.jpg") as $filename) { 
   echo "$filename size " . filesize($filename) . "n"; 
   unlink($filename); 
} ?> 

Как переписать скрипт , чтобы удалял картинки в папке data , не только в корне , но и во вложенных файлах?

Или например вообще чтобы удаляло все,что в папке data

Как вариант: удалять все папки с картинками, а затем создавать папки заново.

Иначе только рекурсивный обход папок.

Надіслати
Поділитися на інших сайтах


Smallbear: так пробовал?

/bin/rm -rf /home/......./image/cache/data
Это написать в поле "Задача" вместо всего того, что там сейчас.

попробовал прописать,но не помогло,ну это впринципе и логично там ведь вроде можно только путь к скрипту прописать а не команду или я не прав?

Надіслати
Поділитися на інших сайтах


Как вариант: удалять все папки с картинками, а затем создавать папки заново.

Иначе только рекурсивный обход папок.

Удалить все папки-это Вы имеете ввиду писать скрипт который я привел для каждой папки или что?

Про ррекурсивный обход читал, но не один скрипт который я находил не заработал.Если поделитесь рабочим буду очень благодарен.

Надіслати
Поділитися на інших сайтах


попробовал прописать,но не помогло,ну это впринципе и логично там ведь вроде можно только путь к скрипту прописать а не команду или я не прав?

Вообще крону всё-равно - у вас на скриншоте видно, что указан путь к команде 'php' с параметром для запуска конкретного файла. Т.е. вместо пути к php можно указать любую другую команду, по идее. Но! - мало-ли как там у вашего хостера всё устроено, так что лучше прямо у него и спросить почему этот вариант не сработал.
  • +1 1
Надіслати
Поділитися на інших сайтах


Но суть не в этом,можно и путь к фалу со скриптом прописать , только сам скрипт никто не поможет дописать?

<?php foreach (glob("*.jpg") as $filename) { 
   echo "$filename size " . filesize($filename) . "n"; 
   unlink($filename); 
} ?> 

вот такой скрипт вставленный в папку image\cache\data работает,но он удаляет только файлы jpg которые находятся в папке data.А те картинки которые создаются во вложенных папках он не трогает.

Как-то так:

<?php
function rm_tree($dirname) { 
            $dirs = glob("$dirname/*", GLOB_ONLYDIR|GLOB_NOSORT); 
            foreach ($dirs as $d) {

   foreach (glob("$dirname/$d/*.jpg", GLOB_NOSORT) as $filename) { 
     echo "$dirname/$d/$filename size " . filesize($dirname/$d/$filename) . "\n"; 
     unlink($dirname/$d/$filename);
   }

            rm_tree($dirname/$d);
            } 
}

rm_tree(".");
?>

Скрипт не тестировал, так что лучше сделать полный бекап перед тем как пробовать.

  • +1 1
Надіслати
Поділитися на інших сайтах


Вообще крону всё-равно - у вас на скриншоте видно, что указан путь к команде 'php' с параметром для запуска конкретного файла. Т.е. вместо пути к php можно указать любую другую команду, по идее. Но! - мало-ли как там у вашего хостера всё устроено, так что лучше прямо у него и спросить почему этот вариант не сработал.

ну я так понимаю чтобы команды можно было писать нуженssh доступ?а его на хостинге я знаю что нет. У хостера я спрашивал,сказали что нужно прописывать путь к файлу со скриптом,только скрипт не дали:)

Надіслати
Поділитися на інших сайтах


Как-то так:

<?php
function rm_tree($dirname) { 
            $dirs = glob("$dirname/*", GLOB_ONLYDIR|GLOB_NOSORT); 
            foreach ($dirs as $d) {

   foreach (glob("$dirname/$d/*.jpg", GLOB_NOSORT) as $filename) { 
     echo "$dirname/$d/$filename size " . filesize($dirname/$d/$filename) . "\n"; 
     unlink($dirname/$d/$filename);
   }

            rm_tree($dirname/$d);
            } 
}

rm_tree(".");
?>

Скрипт не тестировал, так что лучше сделать полный бекап перед тем как пробовать.

спасибо большое за скрипт , только он к сожалению не работает

сначала его вставил в папку image\cache\data там была такая ошибка на всю страницу,причем какое-то время записи добавляются , потом останавливается добавление

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\data\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\data\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\data\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\data\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\data\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\data\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\data\del.php on line 11

потом вставил в папку image\cache\ вверху стало писать немного другую ошибку,а дальше до конца страницы опять та же ошибка , что и в предидущем случае

rning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 7

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 7
././data/././data/apple_logo-100x100.jpg size 
Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 8

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 8

Warning: unlink() [function.unlink]: No error in Z:\home\localhost\www\ledw\image\cache\del.php on line 8

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 7

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 7
././data/././data/apple_logo-160x160.jpg size 
Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 8

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 8

Warning: unlink() [function.unlink]: No error in Z:\home\localhost\www\ledw\image\cache\del.php on line 8

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Warning: Division by zero in Z:\home\localhost\www\ledw\image\cache\del.php on line 11

Помогите пожалуйста дописать этот скриптик,я чувствую,что уже немного осталось :)

Надіслати
Поділитися на інших сайтах


<?php

function rm_tree($dirname) {

$dirs = glob("$dirname/*", GLOB_ONLYDIR|GLOB_NOSORT);

foreach ($dirs as $d) {

foreach (glob("$d/*.jpg", GLOB_NOSORT) as $filename) {

echo "$d/$filename size " . filesize("$d/$filename") . "\n";

unlink("$d/$filename");

}

rm_tree($d);

}

}

rm_tree(".");

?>

А если так?

Надіслати
Поділитися на інших сайтах


<?php
function rm_tree($dirname) { 
            $dirs = glob("$dirname/*", GLOB_ONLYDIR|GLOB_NOSORT); 
            foreach ($dirs as $d) {

   foreach (glob("$d/*.jpg", GLOB_NOSORT) as $filename) { 
     echo "$d/$filename size " . filesize("$d/$filename") . "\n"; 
     unlink("$d/$filename");
   }

            rm_tree($d);
            } 
}

rm_tree(".");
?>
А если так?

у меня опять не работает, а у Вас этот срипт работал?Может я чего-то не так делаю,так вроде,что тут делать прописал путь к скрипту в адресной строке и запустил,все..или я что-то и тут мог упустить,я уже не понимаю.

Или Вы этот скрипт не тестировали?

У меня вот такого плана ошибки на всю страницу выдает:

Warning: filesize() [function.filesize]: stat failed for ./data/./data/apple_logo-100x100.jpg in Z:\home\localhost\www\ledw\image\cache\del.php on line 7
./data/./data/apple_logo-100x100.jpg size 
Warning: unlink(./data/./data/apple_logo-100x100.jpg) [function.unlink]: No such file or directory in Z:\home\localhost\www\ledw\image\cache\del.php on line 8

Warning: filesize() [function.filesize]: stat failed for ./data/./data/apple_logo-160x160.jpg in Z:\home\localhost\www\ledw\image\cache\del.php on line 7
./data/./data/apple_logo-160x160.jpg size 
Warning: unlink(./data/./data/apple_logo-160x160.jpg) [function.unlink]: No such file or directory in Z:\home\localhost\www\ledw\image\cache\del.php on line 8

Warning: filesize() [function.filesize]: stat failed for ./data/products/binary_watch/./data/products/binary_watch/29-ledwatch-120x120.jpg in Z:\home\localhost\www\ledw\image\cache\del.php on line 7
./data/products/binary_watch/./data/products/binary_watch/29-ledwatch-120x120.jpg size 
Warning: unlink(./data/products/binary_watch/./data/products/binary_watch/29-ledwatch-120x120.jpg) [function.unlink]: No such file or directory in Z:\home\localhost\www\ledw\image\cache\del.php on line 8
Надіслати
Поділитися на інших сайтах


Ну на фига весь этот цирк?

Лёгких путей не ищем?

Да обратись ты к хостеру... он тебе внятно ответит какой командой грохнуть содержимое папки.

Надіслати
Поділитися на інших сайтах

Ну на фига весь этот цирк?

Лёгких путей не ищем?

Да обратись ты к хостеру... он тебе внятно ответит какой командой грохнуть содержимое папки.

мне тоже интересно зачем вся эта тема (хоть я ее и создал). Почему-то мне казалось,что эту проблему все хоть как-то решают,а оказывается или никак не решают или жалко поделится скриптиком.

По поводу хостера я ведь писал выше,что хостер сказал "пиши путь к скрипту,а не какую-то команду в крон.." вот я и мучаюсь теперь с этим кэшем

Надіслати
Поділитися на інших сайтах


Smallbear: остальные заказывают столько место на диске, сколько им требуется. Либо руками оптимизируют картинки в кэше.

<?php
function rm_tree($dirname) { 
            $dirs = glob("$dirname/*", GLOB_ONLYDIR|GLOB_NOSORT); 
            foreach ($dirs as $d) {

   foreach (glob("$d/*.jpg", GLOB_NOSORT) as $filename) { 
     echo "$filename size " . filesize("$filename") . "\n"; 
     unlink("$filename");
   }

            rm_tree($d);
            } 
}

rm_tree(".");
?>
Вот так уже должно заработать.
  • +1 1
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.