Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Как удалить все файлы из папки с помощью PHP?

#php #файлы


У меня большое количество посетителей в день и создаётся до 50 тысяч сессий в день.
Пишу скрипт, чтобы когда число сессий в папке mod-tmp превысит 20 тысяч, сервер удалял
бы из неё все файлы и перезагружался. Помогите, пожалуйста, как с помощью PHP удалить
все файлы из 1 папки?
    


Ответы

Ответ 1



Изобретаете громоздкий велосипед. Вот самый быстрый и самый легкий способ: function clear() { if (file_exists('/cache/')) { foreach (glob('/cache/*') as $file) { unlink($file); } } } И всё. Дальше вызываете где и когда нужно. К примеру, если это Wordpress, вешаете add_action('save_post','clear').

Ответ 2



Грубый подход, очень грубый: $baseDir = "./"; exec("rm -f " .$baseDir . "/dir/*"); Это сработает только в Linux. Еще раз скажу, подход очень грубый и лучше такого не использовать НИКОГДА.

Ответ 3



Вероятно, всё намного проще. ISPManager криво меняет конфиг php отключая сборщик мусора сессий. Открывайте конфиг php. По-дефолту /etc/php.d/apache/php.ini Меняйте параметр session.gc_probability=0 в значение 1 Перезапускаете аппач /etc/init.d/apache2 restart Всё, сборка мусора снова — дело php.

Ответ 4



Удалить средствами php сразу все не получится. Только в цикле. Возможно следует посмотреть в сторону демонов, как сказал @Inart. Код для пхп: function cleanDir($dir) { $files = glob($dir."/*"); $c = count($files); if (count($files) > 0) { foreach ($files as $file) { if (file_exists($file)) { unlink($file); } } } }

Ответ 5



array_map('unlink', glob('./cache/*'));

Ответ 6



А попробуйте лучше удалять не все сразу, а постепенно. То есть PHP-скрипт каждого пользователя, который зашел к вам на сайт, будет удалять, например, по 1000 файлов, пока их не останется вовсе. Это сделать не сложно. Достаточно одного XML-Файла ( БД здесь не обязательно использовать ) с двумя записями - сколько осталось и вторая - надо ли производить удаление.

Ответ 7



У меня вот таким скриптом все удалило... подчистую... вместе с сайтом. if ($objs = glob($dir."/*")) { echo $objs; foreach($objs as $obj) { if(is_dir($obj)){ }else{ unlink($obj); } } } rmdir($dir);

Комментариев нет:

Отправить комментарий