Перейти к содержанию
Smallbear

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

Рекомендуемые сообщения

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Ну а чтобы кто-то обьяснил не мешало бы т.к. начал я читать про этот крон и ничего совсем не понял. Поэтому прошу помощи :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'а очищать директорию... там одна команда.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

<?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 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.