картинки в бд

SA739

Cogito, ergo sum
картинки в бд

доброго времени суток
есть пара вопросов:
1. приер кода
PHP:
if (!empty($_POST[send])) {
	$upFile = "$upDir/$_FILES[userfile][name]";
	move_uploaded_file($_FILES[userfile][tmp_name],$upFile);
	$fileHandle = fopen($upFile,"rb") or die ("Cant open $upFile");
	$fileData = addslashes(fread($fileHandle,filesize($upFile)));
	fclose($fileHandle);
	if(!unlink($upFile)) {
		echo "Cant delete $upFile<br>";
	}
	if (!$res = db_query("INSERT INTO pictures
						SET 
						data='$fileData', 
						descr='test picture'")) {
		print db_error();
		exit;
	}
	header("Location:".$_SERVER[SCRIPT_NAME]);
}
каким-либо образом можно избавиться от звеньев с копированием, чтением и удалением файла, тоесть что-то вроде move_uploaded_file сразу в переменную?

2. начитался в форму о том, что хранить картинки в базе не кошерно, но у меня на этот счет пара сомнений:
- юзер зашел по фтп и бахнул из каталога картинку (гипотетическая ситуация но все же), БД то не знает о том, что файло уже ушло в небытие , можно конечно сделать синхронизацию, типа скриптом по крону раз в сутки пройтись по таблице и по каталогу с картинками..
- юзер бахнул напрямую запись в таблице, а файло лежит себе и место бессовестно отжирает.
- ну и (может конечно звучит субъективно) но с базой работать легче, нежели бд + файлы..

просьба высказаться по этому поводу (только сильно не пинайте), е исли всетаки способ хранения бд + файловая система предпочтительней, то что актуально хранить в базе?
я сколняюсь к следующему: id (unique), id (товара), descr (описание картинки для alt), path (относительная ссылка на файл)..

заранее благодарен..
 

Frol

Новичок
PHP:
file_get_contents($_FILES['userfile']['tmp_name']);
-~{}~ 04.02.04 14:41:

а использовать только файлы религия не дает?
 

SA739

Cogito, ergo sum
to Frol
спасибо..

-~{}~ 04.02.04 15:52:

Автор оригинала: Frol
а использовать только файлы религия не дает?
да понимаешь-ли, раз есть возможность использовать для хранения каталога товаров (описание, идентификатор, разбивка по подразделам и т.п.) имхо проще и правильнее в бд, единственное что я еще не решил: как хранить изображения товара (как видно из моего первого поста)..

ЗЫ. каталог не большой ~ 1000- наименований..
 

KES

Guest
Re: картинки в бд

2. начитался в форму о том, что хранить картинки в базе не кошерно, но у меня на этот счет пара сомнений:
- юзер зашел по фтп и бахнул из каталога картинку (гипотетическая ситуация но все же), БД то не знает о том, что файло уже ушло в небытие , можно конечно сделать синхронизацию, типа скриптом по крону раз в сутки пройтись по таблице и по каталогу с картинками..
- юзер бахнул напрямую запись в таблице, а файло лежит себе и место бессовестно отжирает.
- ну и (может конечно звучит субъективно) но с базой работать легче, нежели бд + файлы..
[/QUOTE]
>2.1
Юзер подрубился к базе данных и дропнул ее "гипотетическая ситуация, но все же..."
>2.2
Юзер делает записи в базу через твой скрипт, который работает без глюков. Поэтому файлы не будут отжирать место
>2.3
Легко работать как с файлами так и с базой. Просто необходимо поискать нужные функции поискать...

Я бы использовал БД + файлы. В БД хранить пути к файлам.
 

гоша

Guest
Да и пути-то не особенно надо хранить.

/images/tovary/$id.jpg

Если у тебя юзера по фтп свободно гуляют и напрямую (?) в базу пишут -- с этим надо что-то делать.
 

Falc

Новичок
SA739
Я например картинки чисто в файлах храню.
Имена формирую так:
tovars/id_count.jpg

Если надо вывести картинки для товара с заданым id делаю так:
glob('tovars/'.$id.'_*');
Пока картинок меньше тысячи работает очень быстро, а если их будет больше то скорее всего будут проблемы с местом на хостинге нежели с со скорость вывода :)
 

SA739

Cogito, ergo sum
нужно не флеймить и чиать внимательно пост, там написано гипотетически, что в моем понимании есть формально возможным но реальность таковой ситуации стремится к 0

-~{}~ 04.02.04 17:31:

Falc
мерси, как вариант буду иметь ввиду..
 

Falc

Новичок
SA739
Я дал аргумент к п. 2.3
>>но с базой работать легче, нежели бд + файлы..

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