#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);
Комментариев нет:
Отправить комментарий