Помогите с проверкой файлов +(mysql)

imaxwell
На сайте с 28.12.2010
Offline
41
548

Приветствую!

Есть база данных, в ней записана инфа о файлах. Файлы хранятся в папке и переименованы под айди из базы. Файлов много, записей в базе тоже соответственно. Более 10к

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

Сделал простую проверку на несуществующие файлы, при этом запись в базе есть.

Запись удалить проще, т.к. таких ненужных записей немного.

Код:

$result = mysqli_query($link, 'select * from `work` order by `id`');

while($row=mysqli_fetch_assoc($result)) {

$dir_name=floor($row['id']/1000);

$filename = '/var/www/host/work/'.$dir_name.'/'.$row['id'].'.tno';

if (file_exists($filename)) {

echo '';

} else {

echo 'Файл '.$row['id'].' <font color="red">не существует</font><br />';

}}

Теперь не могу сделать, что бы сканировалась папка и показывались те файлы, которых нету в базе. А таких много и место занимают впустую...

Допустим: ид с номером 1,4,8,9,10 есть, и файлы 2.tno, 3.tno, 5.tno есть. Как сделать так, что бы в списке выводились эти файлы? (В базе записей нет, а файлы просто так лежат).

Искал, пробовал, так и не получилось..

Структура таблицы: id (autoincrement), filename, date, size

Надеюсь понятно все описал.

edogs software
На сайте с 15.12.2005
Offline
775
#1

В "этом" списке разумеется никак - Вы получаете список из базы, в которой этих файлов нет.

glob, scandir - помогут Вам получить список файлов в папке.

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

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
imaxwell
На сайте с 28.12.2010
Offline
41
#2

Ничего не получается у меня (( Может еще подскажете?

siv1987
На сайте с 02.04.2009
Offline
427
#3

scandir, readdir вам в помощь.

bukachuk
На сайте с 07.09.2008
Offline
97
#4

RecursiveDirectoryIterator пройдите всю папку рекурсивно, файл потом через explode и получите ID которое ищите потом в базе

Программирование PHP,Mysql (/ru/forum/934470)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий