Всем привет! Народ! Подскажите можна написать код который сможет удалить файлы которых нет в базе даных?
А именно в меня например есть папка с фалами и адрес каждого файла записан в базу но парочка адресов файлов удалены с бази а в папке они остались! Их както можна удалить одним кодом(скриптом)?
SELCET'ом выбераешь из БД массив всех файлов, потом в цикле проверяешь существование файла и наличие его в массиве...
08 Май 2012, 16:57TOOZ, а можешь это кодом все написать? Я просто ток учусь в пихе и мало функций знаю!
08 Май 2012, 17:00Veres, [php:1:cf4c05d068]<?php
$result = mysql_query('SELECT * FROM `files`');
while ( $files_in_db[] = mysql_fetch_array($result)) {}
$dir = '/dir/';
$files_in_dir = scandir($dir);
for($i = 0; $i<count($files_in_dir);$i++)
{
if(!in_array($files_in_dir[$i],$files_in_db)
unlink($dir.$files_in_dir[$i]);
}
?>[/php:1:cf4c05d068]
Как то так наверно
P.S. только надо еще код проверить, а то ты я тебе тут понасоветую))
TOOZ, Дак оно удаляет файлы те что в базе!!! А мне нужна чтоб удаляло те файлы что не в базе!
Вернее оно удаляет все файлы в директории!
В меня вот такая база `photos` (`id`, `uid` `attach`)
attach - это адрес фотки где она находится (вида foto/img_1336497371.jpg)!
Вот как мне с папки foto удалить фотки которых нет в базе?
Циклом по файлам бегаешь и смотришь есть ли такой файл в базе. Если нету, удаляешь.
09 Май 2012, 10:40Дело в том что файлов около 1000 и коло 30 ненужных! Не можно их удалить какимто скриптом?
09 Май 2012, 23:22мож так?
[php:1:19cbfc48dc]
$result = mysql_query('SELECT * FROM `files`');
while ( $f=mysql_fetch_array($result)){
if(!is_file($dir.'/'.$f['name']))unlink($dir.'/'.$f['name']);
}
[/php:1:19cbfc48dc]
Veres, ты как тестил?код прям так написал или подстроил под свой скрипт? если прям так то оно и не будет работать
11 Май 2012, 20:14