Jump to content
estverum

Добавление папки uploads2

Recommended Posts

Нигде не увидел данного вопроса и соответственно ответа на него. Часть кода получилось перелопатить, но возникают загвоздки в некоторых моментах. 

Суть в том, чтобы добавить к имеющейся папке uploads, другую папку uploads2(например). Имеющиеся файлы должны стягиваться с uploads, новые файлы загружаются вновь созданную uploads2. Т.е. две рабочие папки uploads...с возможностью добавлять в дальнейшем новые папки uploads3 и т.д.

Трудности возникли в attache и js, т.е. везде где идет проверка файлов по заданному пути (file_exists) без запроса с БД. Есть кто может такое провернуть или подсказать в решении данной проблемы.

Edited by estverum

Share this post


Link to post
Share on other sites
45 минут назад, estverum сказал:

Нигде не увидел данного вопроса и соответственно ответа на него. Часть кода получилось перелопатить, но возникают загвоздки в некоторых моментах. 

Суть в том, чтобы добавить к имеющейся папке uploads, другую папку uploads2(например). Имеющиеся файлы должны стягиваться с uploads, новые файлы загружаются вновь созданную uploads2. Т.е. две рабочие папки uploads...с возможностью добавлять в дальнейшем новые папки uploads3 и т.д.

Трудности возникли в attache и js, т.е. везде где идет проверка файлов по заданному пути (file_exists) без запроса с БД. Есть кто может такой провернуть или подсказать в решении данной проблемы.

Типа фото в uploads а музыка в uploads2??? 

Share this post


Link to post
Share on other sites
16 минут назад, Leymelki сказал:

Типа фото в uploads а музыка в uploads2??? 

Нет. В папке uploads остаются имеющиеся файлы - оттуда будут только браться файлы для отображения. В папку uploads2 - будут грузиться новые файлы - attach, video, photo, users и т.д., При создании uploads3, такая же история будет, т.е. в uploads и uploads2 файл не будут добавляться, а будут в uploads3. 

Это актуально тем, у кого uploads имеет большие размеры, что не позволяет постоянно делать резерв.

Share this post


Link to post
Share on other sites
25 минут назад, estverum сказал:

Нет. В папке uploads остаются имеющиеся файлы - оттуда будут только браться файлы для отображения. В папку uploads2 - будут грузиться новые файлы - attach, video, photo, users и т.д., При создании uploads3, такая же история будет, т.е. в uploads и uploads2 файл не будут добавляться, а будут в uploads3. 

Это актуально тем, у кого uploads имеет большие размеры, что не позволяет постоянно делать резерв.

Я так понял тебе надо загрузку файлов на поддомен на внешние сервера как у вк?

Share this post


Link to post
Share on other sites
5 минут назад, PHPSocial сказал:

Я так понял тебе надо загрузку файлов на поддомен на внешние сервера как у вк?

Можно и так...но на самом деле подойдет и внутри папок сервера. Т.е. разницы нет. Проще я думаю, если все будет в пределах одного сервера. Это для удобства архивации - проще делать архивы по 100Гб, чем постоянно гонять 400Гб

Share this post


Link to post
Share on other sites
1 минуту назад, estverum сказал:

Можно и так...но на самом деле подойдет и внутри папок сервера. Т.е. разницы нет. Проще я думаю, если все будет в пределах одного сервера. Это для удобства архивации - проще делать архивы по 100Гб, чем постоянно гонять 400Гб

Ну вообще то ты не прав лучше на 3-5 серверах размещать файлы что бы нагрузки не было на основной...

Я могу сделать тебе что надо но только платно

Share this post


Link to post
Share on other sites
1 минуту назад, PHPSocial сказал:

Ну вообще то ты не прав лучше на 3-5 серверах размещать файлы что бы нагрузки не было на основной...

Я могу сделать тебе что надо но только платно

Нагрузка только на hdd идет. Остальное будет нагружаться одинаково. Мне без разницы - на домен или в папку. Главное чтобы принцип был идентичен.

Сроки - сумма. Необходимо в виде инструкции что куда и как добавить. Файлы идентичны имеющимся.

Share this post


Link to post
Share on other sites
2 минуты назад, estverum сказал:

Нагрузка только на hdd идет. Остальное будет нагружаться одинаково. Мне без разницы - на домен или в папку. Главное чтобы принцип был идентичен.

Сроки - сумма. Необходимо в виде инструкции что куда и как добавить. Файлы идентичны имеющимся.

Пиши в вк Юра Балаж

Share this post


Link to post
Share on other sites
31 минуту назад, estverum сказал:

Нагрузка только на hdd идет. Остальное будет нагружаться одинаково. Мне без разницы - на домен или в папку. Главное чтобы принцип был идентичен.

Сроки - сумма. Необходимо в виде инструкции что куда и как добавить. Файлы идентичны имеющимся.

Такое уже сделано, и поделились этим бесплатно, не плати за то что уже дали бесплатно

Share this post


Link to post
Share on other sites
29 минут назад, PHPSocial сказал:

Пиши в вк Юра Балаж

Уже есть такие моды бесплатно! А ты все бабла хочешь срубить

Share this post


Link to post
Share on other sites
33 минуты назад, estverum сказал:

Нагрузка только на hdd идет. Остальное будет нагружаться одинаково. Мне без разницы - на домен или в папку. Главное чтобы принцип был идентичен.

Сроки - сумма. Необходимо в виде инструкции что куда и как добавить. Файлы идентичны имеющимся.

Есть как файлы сохранять на другой домин и есть как хранить на яндекс диске(все это есть в бесплатном доступе) не плати просто поищи

Share this post


Link to post
Share on other sites
38 минут назад, PHPSocial сказал:

Пиши в вк Юра Балаж

Если бы я хотел с тобой связаться через вк - так и сделал бы. Я вкурсе,кто ты по твоему нику.

Share this post


Link to post
Share on other sites
9 минут назад, Leymelki сказал:

Есть как файлы сохранять на другой домин и есть как хранить на яндекс диске(все это есть в бесплатном доступе) не плати просто поищи

Но нет как сохранять на свой сервер то что ему надо!

Share this post


Link to post
Share on other sites
8 минут назад, Leymelki сказал:

Есть как файлы сохранять на другой домин и есть как хранить на яндекс диске(все это есть в бесплатном доступе) не плати просто поищи

Я видел этот модуль. Там идет сохранение документов. Я знаю автора данного модуля. У меня возникла просто трудность с прописанием путей в attached и js,все остальное уже сделано.

Share this post


Link to post
Share on other sites
2 минуты назад, estverum сказал:

Если бы я хотел с тобой связаться через вк - так и сделал бы. Я вкурсе,кто ты по твоему нику.

Понятно

Share this post


Link to post
Share on other sites
2 минуты назад, PHPSocial сказал:

Но нет как сохранять на свой сервер то что ему надо!

Да я уже половина этого сделал. Прописал поля в бд,в файла откорректировал запросы в бд на ввод и вывод. Проблема осталась только в прикрепленных файлах и js. Я про эти файлы и писал - сколько будет стоить в них внести правильную корректровку.

Edited by estverum

Share this post


Link to post
Share on other sites
Только что, estverum сказал:

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

Ну кинь сюда или мне в ЛС файл где надо сделать 

Share this post


Link to post
Share on other sites
3 минуты назад, PHPSocial сказал:

Ну кинь сюда или мне в ЛС файл где надо сделать 

Пример кода.

function attached($query){
		global $db;
		
				$attach_arr = explode('||', $query['attach']);
				$cnt_attach = 1;
				$cnt_attach_link = 1;
				$jid = 0;
				$attach_result = '';
				$up_hdd = $query['hdd_at'];
				$up_hdd_user = $query['hdd_albums'];
				$up_hdd_videos = $query['hdd_videos'];
				foreach($attach_arr as $attach_file){
					$attach_type = explode('|', $attach_file);
					//Фото со стены юзера
					 if($attach_type[0] == 'photo_u'){
						if($query['tell_uid']) $attauthor_user_id = $query['tell_uid'];
						elseif($query['author_user_id']) $attauthor_user_id = $query['author_user_id'];
						elseif($query['auser_id']) $attauthor_user_id = $query['auser_id'];
						elseif($query['user_id']) $attauthor_user_id = $query['owner_id'];
						elseif($query['public_id']) $attauthor_user_id = $query['public_id'];

						if($attach_type[1] == 'attach' AND file_exists(ROOT_DIR."/uploads/{$up_hdd}/attach/{$attauthor_user_id}/c_{$attach_type[2]}")){

							if($cnt_attach == 1)
							
								$attach_result .= "<div class=\"profile_comment_attach_photo cursor_pointer page_num{$query['id']}\" onClick=\"groups.wall_photo_view('{$query['id']}', '{$attauthor_user_id}', '{$attach_type[1]}', '{$cnt_attach}', 'photo_u')\"><img id=\"photo_wall_{$query['id']}_{$cnt_attach}\" src=\"/uploads/{$up_hdd}/attach/{$attauthor_user_id}/{$attach_type[2]}\" align=\"left\" /></div>";

							else
								
								$attach_result .= "<img id=\"photo_wall_{$query['id']}_{$cnt_attach}\" src=\"/uploads/{$up_hdd}/attach/{$attauthor_user_id}/c_{$attach_type[2]}\" style=\"margin-top:3px;margin-right:3px\" align=\"left\" onClick=\"groups.wall_photo_view('{$query['id']}', '', '{$attach_type[1]}', '{$cnt_attach}')\" class=\"cursor_pointer page_num{$query['id']}\" height=\"{$rodImHeigh}\" />";
								
							
							$cnt_attach++;

							
						} elseif(file_exists(ROOT_DIR."/uploads/{$up_hdd_user}/users/{$attauthor_user_id}/albums/{$attach_type[2]}/c_{$attach_type[1]}")){
						
							if($cnt_attach < 2)
								$attach_result .= "<div class=\"profile_comment_attach_photo cursor_pointer page_num{$query['id']}\" onClick=\"groups.wall_photo_view('{$query['id']}', '{$attauthor_user_id}', '{$attach_type[1]}', '{$cnt_attach}', 'photo_u')\"><img id=\"photo_wall_{$query['id']}_{$cnt_attach}\" src=\"/uploads/{$up_hdd_user}/users/{$attauthor_user_id}/albums/{$attach_type[2]}/{$attach_type[1]}\" align=\"left\" /></div>";
							else
								$attach_result .= "<img id=\"photo_wall_{$query['id']}_{$cnt_attach}\" src=\"/uploads/{$up_hdd_user}/users/{$attauthor_user_id}/albums/{$attach_type[2]}/c_{$attach_type[1]}\" style=\"margin-top:3px;margin-right:3px\" align=\"left\" onClick=\"groups.wall_photo_view('{$query['id']}', '{$query['tell_uid']}', '{$attach_type[1]}', '{$cnt_attach}')\" class=\"cursor_pointer page_num{$query['id']}\" />";
								
							$cnt_attach++;
						}
						
						$resLinkTitle = '';

					//Видео
					} elseif($attach_type[0] == 'video' AND file_exists(ROOT_DIR."/uploads/{$up_hdd_videos}/videos/{$attach_type[3]}/{$attach_type[1]}")){
					
						$for_cnt_attach_video = explode('video|', $query['attach']);
						$cnt_attach_video = count($for_cnt_attach_video)-1;
				
						if($cnt_attach_video == 1 AND preg_match('/(photo|photo_u)/i', $query['attach']) == false){
							
							$video_id = intval($attach_type[2]);
							
							$row_video = $db->super_query("SELECT video, title, hdd_videos FROM `".PREFIX."_videos` WHERE id = '{$video_id}'", false, "wall/video{$video_id}");
							$row_video['title'] = stripslashes($row_video['title']);
							$row_video['video'] = stripslashes($row_video['video']);
							$row_video['video'] = strtr($row_video['video'], array('width="770"' => 'width="390"', 'height="420"' => 'height="310"'));
							
							$attach_result .= "<div class=\"cursor_pointer\" id=\"no_video_frame{$video_id}\" onClick=\"$('#'+this.id).hide();$('#video_frame{$video_id}').show();\">
							<div class=\"video_inline_icon\"></div><img src=\"/uploads/{$row_video['hdd_videos']}/videos/{$attach_type[3]}/{$attach_type[1]}\" style=\"margin-top:3px\" width=\"390\" height=\"310\" /></div><div id=\"video_frame{$video_id}\" class=\"no_display\" style=\"padding-top:3px\">{$row_video['video']}</div><div class=\"video_inline_vititle\"></div><a href=\"/video{$attach_type[3]}_{$attach_type[2]}\" onClick=\"videos.show({$attach_type[2]}, this.href, location.href); return false\"><b>{$row_video['title']}</b></a>";
						
						} else {
							
							$attach_result .= "<div class=\"fl_l\"><a href=\"/video{$attach_type[3]}_{$attach_type[2]}\" onClick=\"videos.show({$attach_type[2]}, this.href, location.href); return false\"><div class=\"video_inline_icon video_inline_icon2\"></div><img src=\"/uploads/{$row_video['hdd_videos']}/videos/{$attach_type[3]}/{$attach_type[1]}\" style=\"margin-top:3px;margin-right:3px\" align=\"left\" /></a></div>";
							
						}

						$resLinkTitle = '';
						
					//Музыка
					} elseif($attach_type[0] == 'audio'){
						$audioId = intval($attach_type[1]);
						$audioInfo = $db->super_query("SELECT artist, title, url FROM `".PREFIX."_audio` WHERE id = '".$audioId."'");
						if($audioInfo){
							if($_GET['uid']) $appClassWidth = 'player_mini_mbar_wall_all';
							$jid++;
							$attach_result .= '<div class="audioForSize'.$query['id'].' '.$appClassWidth.'" id="audioForSize"><div class="audio_onetrack audio_wall_onemus"><div class="audio_playic cursor_pointer fl_l" onClick="music.newStartPlay(\''.$jid.'\', '.$query['id'].')" id="icPlay_'.$query['id'].$jid.'"></div><div id="music_'.$query['id'].$jid.'" data="'.$audioInfo['url'].'" class="fl_l" style="margin-top:-1px"><a href="/?go=search&type=5&query='.$audioInfo['artist'].'&n=1" onClick="Page.Go(this.href); return false"><b>'.stripslashes($audioInfo['artist']).'</b></a> &ndash; '.stripslashes($audioInfo['title']).'</div><div id="play_time'.$query['id'].$jid.'" class="color777 fl_r no_display" style="margin-top:2px;margin-right:5px">00:00</div><div class="player_mini_mbar fl_l no_display player_mini_mbar_wall '.$appClassWidth.'" id="ppbarPro'.$query['id'].$jid.'"></div></div></div>';
						}
						
						$resLinkTitle = '';
					//Смайлик
					} elseif($attach_type[0] == 'smile' AND file_exists(ROOT_DIR."/uploads/u/smiles/{$attach_type[1]}")){
						$attach_result .= "<img src=\"/uploads/u/smiles/".$attach_type[1]."\" style=\"margin-right:5px\" />";

						$resLinkTitle = '';
						

						
					//Если документ
					} elseif($attach_type[0] == 'doc'){
					
						$doc_id = intval($attach_type[1]);
						
						$row_doc = $db->super_query("SELECT dname, dsize FROM `".PREFIX."_doc` WHERE did = '{$doc_id}'", false, "wall/doc{$doc_id}");
						
						if($row_doc){
							
							$attach_result .= '<div style="margin-top:5px;margin-bottom:5px" class="clear"><div class="doc_attach_ic fl_l" style="margin-top:4px;margin-left:0px"></div><div class="attach_link_block_te"><div class="fl_l">Файл <a href="/index.php?go=doc&act=download&did='.$doc_id.'" target="_blank" onMouseOver="myhtml.title(\''.$doc_id.$cnt_attach.$query['id'].'\', \'<b>Размер файла: '.$row_doc['dsize'].'</b>\', \'doc_\')" id="doc_'.$doc_id.$cnt_attach.$query['id'].'">'.$row_doc['dname'].'</a></div></div></div><div class="clear"></div>';
								
							$cnt_attach++;
						}
						

					}  else
					
						$attach_result .= '';

				}
					return $attach_result;
				
			
	}

                $up_hdd = $query['hdd_at'];
                $up_hdd_user = $query['hdd_albums'];
                $up_hdd_videos = $query['hdd_videos'];

Это пути которые пытался вставить, они берутся с полей бд для соответствующих файлов (hdd_at - PREFIX_attached; hdd_albums - PREFIX_albums; hdd_videos - PREFIX_videos), но проблема в том,что данный код не делает запрос в БД)))) , а поиск файла происходит через file_exists и строго заданного пути ROOT_DIR."/uploads/attach/{$attauthor_user_id}/c_{$attach_type[2]}", вот как в этом пути проставить {$up_hdd}, который будет указывать путь к файлу, у каждого файла он будет разный, на данный момент uploads или uploads2....

Share this post


Link to post
Share on other sites

А не проще ли частично архивировать  сайт, архивировать изменения, при имеющемся уже полном архиве? 

Share this post


Link to post
Share on other sites

Мне кажется будет проще написать php функция которая будет считать общий вес папки и если достигнут лимит, при загрузке нового файла,создавать новую папку.

И при загрузке заносить полный путь до файла. Например uploads2\users\1\albums\1\ а тут файл.И само собой на сайте выводить.

Ну или вариант второй.Создать поддомен и грузить всё туда.

Может я немного не правильно понимаю что автор хочет:emoji_1f602:

Share this post


Link to post
Share on other sites
27 минут назад, KirKMS сказал:

Мне кажется будет проще написать php функция которая будет считать общий вес папки и если достигнут лимит, при загрузке нового файла,создавать новую папку.

И при загрузке заносить полный путь до файла. Например uploads2\users\1\albums\1\ а тут файл.И само собой на сайте выводить.

Ну или вариант второй.Создать поддомен и грузить всё туда.

Может я немного не правильно понимаю что автор хочет:emoji_1f602:

Ну это лишний геморой ибо когда будет много файлов твой сайт просто загнется и упадет надо искать более простое решение без лишних проверок лучше всего на поддомен так как я у себя сделал!

Через API

Share this post


Link to post
Share on other sites
В 28.03.2020 в 13:19, PHPSocial сказал:

Ну это лишний геморой ибо когда будет много файлов твой сайт просто загнется и упадет надо искать более простое решение без лишних проверок лучше всего на поддомен так как я у себя сделал!

Через API

если поддомен находится на одном сервере - что изменит??? О какой нагрузке может идти речь, кроме нагрузки на hdd??? Hdd можно примонтировать второй и добавить как папку uploads2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×