Как правильнее сделать вывод фото моделей?

P
На сайте с 06.01.2009
Offline
601
926

Ребят, подскажите, пожалуйста, какой вариант более правильный?

Фотографии моделей размещены на сервере так

завод1/коллекция1/модель1.jpg

завод1/коллекция1/модель2.jpg

завод1/коллекция1/модель3.jpg

завод1/коллекция2/модель1.jpg

завод1/коллекция2/модель2.jpg

завод2/коллекция1/модель1.jpg

завод2/коллекция1/модель2.jpg

и т.д.

завод33/коллекция15/модель16.jpg

Варианты вывода фото

1. В странице коллекции1 читаем папку

$photo = array_slice(scandir('../завод1/коллекция1'),2);

и выводим фото

2. заранее собираем в базу msql все фото моделей. База в итоге выглядит так

папка завода | папка коллекции | фото модели

и в странице открываем таблицу, находим соответствующую папку завода и коллекции и выводим фото.

ps Почему я задал такой вопрос.

Раньше было по варианту №1. Сделал скрипт для сбора в таблицу всех фото моделей(для варианта 2). Время работы скрипта 35 секунд (8000 фото). Не плохо ли то, что скрипт так долго собирает таблицу фотографий?

Спасибо заранее

minor
На сайте с 04.10.2010
Offline
70
#1

Через бд на мой взгляд будет быстрее чем сканировать папку, я за 2 вариант + проще будет совершать разные действия над элементами.

PHP experience 2 year, comprehend seo
P
На сайте с 06.01.2009
Offline
601
#2
minor:
Через бд на мой взгляд будет быстрее чем сканировать папку, я за 2 вариант + проще будет совершать разные действия над элементами.

Да, согласен полностью, ну а то что скрипт сканирует директории 50 заводов (в каждом от 5 до 10 коллекций) и в каждой папке коллекций от 5 до 30 фото - ничего что на это уходит 40 сек? С учетом записи в таблицу.

Каждый раз таблицу удаляю, создаю новую, так как размеры фото или их название могло меняться...



//удалим старую таблицу - ок
mysql_query("DROP TABLE `photo_kollekzii`");
//создадим таблицу - имя таблицы, и описание столбцов auto_increment
mysql_query("CREATE TABLE photo_kollekzii(`id` int(10) unsigned NOT NULL auto_increment, `zavodpapka` varchar(255) NOT NULL, `modelpapka` varchar(255) NOT NULL, `photoname` varchar(255) NOT NULL, `width` integer(3) NOT NULL, `height` integer(3) NOT NULL, PRIMARY KEY (`id`))");


$zavodmassiv = array_slice(scandir('../coll-photo'),2); //скан директории

foreach ($zavodmassiv as $zavodname) {
echo "<br>Завод $zavodname<br>";
$url = '../photo/'.$zavodname.'';
if (is_dir($url)) { echo "<br>да, папка";
$kollektionmassiv = array_slice(scandir($url),2); //скан директории

foreach ($kollektionmassiv as $kollektionname) {
echo "<br>коллекция $kollektionname<br>";
$url = '../coll-photo/'.$zavodname.'/'.$kollektionname.'';
$photomassiv = array_slice(scandir($url),2); //скан директории
foreach ($photomassiv as $photoname) {
$str_count = substr_count($photoname, '.');
if ($str_count>0) {
list( $width, $height ) = getimagesize("$url/$photoname");
//echo "<br>$photoname - $width x $height";
//$massivall[]="$zavodname;$kollektionname;$photoname;$width;$height;$bigwidth;$bigheight";

$result = mysql_query ("INSERT INTO `photo_kollekzii` (`id`, `zavodpapka`, `modelpapka`, `photoname`, `width`, `height`) VALUES (id, '$zavodname', '$kollektionname', '$photoname', '$width', '$height')");
if ($result ===true)
{
//echo "Запись id добавлена успешно!";
}
else { echo "Запись не добавлена!"; }

}
}
}

}

minor
На сайте с 04.10.2010
Offline
70
#3

Что то не правильно, по идеи у вас файлы лежат файлы картинок в папках а пути на них в бд, при добавлении фото сразу добавляем в бд, каждый раз сканировать это очень избыточно.

P
На сайте с 06.01.2009
Offline
601
#4
minor:
Что то не правильно, по идеи у вас файлы лежат файлы картинок в папках а пути на них в бд, при добавлении фото сразу добавляем в бд, каждый раз сканировать это очень избыточно.

"при добавлении фото добавляем в бд" - руками?

minor
На сайте с 04.10.2010
Offline
70
#5

Написать веб-интерфейс для этого. Или у вас как добавляются картинки, копируются руками в папки?

Не увидел сначала, у вас скрипт просто обновляет записи в бд, 40 секунд нормально, не каждый раз он вызывается только когда вы обновляете список файлов. Для юзеров берутся из бд?

P
На сайте с 06.01.2009
Offline
601
#6
minor:
Написать веб-интерфейс для этого. Или у вас как добавляются картинки, копируются руками в папки?
Не увидел сначала, у вас скрипт просто обновляет записи в бд, 40 секунд нормально, не каждый раз он вызывается только когда вы обновляете список файлов. Для юзеров берутся из бд?

Картинки на сервер заливаю по фтп. Сайт без админки, на php.

Залил новые фото или отредактировал старые - запускаю скрипт, только что попробовал - за 7 сек выполнился, так и обновляется таблица в бд. Вывожу фото через msql считываение нужных элементов таблицы.

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