Где лучше сохранять фотографии пользователей?

DiMA

php.spb.ru
Команда форума
> почему нельзя создать?

потомучто на 10000 юзеров будет 10000 каталогов, что сильно затормозит обращения
 

Alexandre

PHPПенсионер
а если перевернуть байты от идишника то раз в пять быстрее crc
 

vovanium

Новичок
Alexandre
это смотря как переворачивать :)
хотя то, я так написал для инфы, а то народ часто забывает что хэш не только md5 бывает.
кроме того с crc32 можно делать довольно удобно
PHP:
$dir = (crc32('user_name') &~ (1<<31)) % 64;
Там сбрасывается 32 бит, чтобы не было отрицательных чисел, можно конечно abs заюзать, но этот вариант быстрее. А вместо 64 подставляется нужное количество каталогов.
 

Димон

Новичок
Автор оригинала: triumvirat
Димон
делать правильно и грамотно нужно учиться с самого начала, даже если сайт является говносайтом с маленькой посещаемостью.
Аха. Учиться.
Хороший кодер - это не тот, который все делает классно, а тот который умеет делать "классно", когда надо и "пойдет", когда тоже надо. А не ипать себе моск над всякой фигней. А то получается из серии прогеров, которые подключают зенд фреймворк и парятся над оптимизацией кода для ускорения быстродействии в сотые доли секунды.
Человек, наверное, давно уже все сделал, а на "выкрутасы" с файлами болт забил. Благо серверов на базе zx-spectrum у хостеров нету :D
 

Духовность™

Продвинутый новичок
Хороший кодер - это не тот, который все делает классно, а тот который умеет делать "классно", когда надо и "пойдет", когда тоже надо.
да, млять, видел я таких "хороших" прогеров, которые не "ипут себе моск всякой фигнёй". Считают себя ниибатца специалистами, хотя пишут на уровне самого позорного ламера + понтов выше крыши. А чо париться то? PHP ведь и вправду позволяет делать хорошие сайты на типичных говнокодерских решениях. Зачем себе парить моск всякой фигней? Стараться придумать оптимальное решение, которое потом можно будет быстро внедрить в новый проект? Создал папочку uploads и напихай туда все 100000 файлов. А чо, работает же!
 

Димон

Новичок
Че напрягся то сразу так?

Большинство кодеров, которых я знал страдали избыточной педантичностью и тщательностью. Привыкали к одному стилю и все, что в него не вписывается заведомо считается плохим. Могли ломать себе голову над названиями, тратя на это слишком много времени, парится над всякой мелочью и т.п. Т.е. здесь на чаше весов время и удовлетворение от правильно (как считает кодер) принятого решения. Как и в маркетинге, в программировании всегда на чаше весов три фактора: скорость, качество и стоимость. Вот хороший кодер умеет этими тремя факторами разумно распоряжаться. Если тебя попросили сделать банальную формочку на сайте-визитки, а ты прикрутил туда мега архитектуру - вот это расточительство времени и сил и денег клиента, который к тебе больше не придет. Если к тебе пришел человек и просит сделать блог и форум, а ты сбацал ему, как умел, сходу, не проектируя, то этот клиент сразу от тебя уйдет, как тока ты баги более-менее пофиксишь. И еще всем раскажет, какой ты специалист. И там и там неумение кодером принимать правильные архитектурные решения.
А говнокод появляется, когда манагер делает заказ на серьезный динамический сайт и платит за него 300$ по фрилансу. Жадность, как говорится, губит фраера. И php тут ни при чем. И на C++ можно херню нагородить.
 

N3K

Новичок
Я делал примерно такое же, только с музыкой. Надо было 1.5кк песен распихать по папкам. У каждой песни был свой идишник, выдавал собственно через пхп, потом переписал на нджинкс. Вот пример пхп.
PHP:
public function previewAction()
    {
    	$id = (int)$this->getRequest()->getParam('id');
    	if (is_file('../../preview/' . substr($id,0,3) . '/' . substr($id,4,7) . '/' . $id . '.mp3')) {
    		print_r(file_get_contents('../../preview/' . substr($id,0,3) . '/' . substr($id,4,7) . '/' . $id . '.mp3'));
    	} else {
	    	$secure_key = $this->_config->download->secure_preview_key;
			$url='http://www.***.com/resell/preview.php?track=' . $id  . '&md5=' . md5( $secure_key . $id);
			$http = new Zend_Http_Client($url);
			$sound = $http->request()->getBody();
			if (strlen($sound)>150) {
				@mkdir('../../preview/' . substr($id,0,3));
				@mkdir('../../preview/' . substr($id,0,3) . '/' . substr($id,4,7));
				file_put_contents('../../preview/' . substr($id,0,3) . '/' . substr($id,4,7) . '/' . $id . '.mp3',$sound);
			}
			print_r($sound); 
    	} 
    	exit();
    }
Тут ещё скачиание трека, если его не существует.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
мдя ... главное - не пользоваться "готовым решением" вроде кода N3K
просто писать, само сложится
 

Udav

Новичок
Народ, большое спасибо за Ваши ответы, у меня такой вопрос появился, а как мне прочитать первый байт хэша? как посоветовал DiMA
 

DiMA

php.spb.ru
Команда форума
hexdec + substr

-~{}~ 06.04.09 20:20:

Alexandre
что-то я не понял, зачем какие-то байты переворачивать?
достаточно просто сделать $id%256 и будет нужное равномерное распределение (для более универсальное - md5)
 
Сверху