![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
Добрый ночи.
Пишу проект на PHP + MYSQL. Передо мной стоит такая задача: есть один сервер (назовем его Фронт - т.е. на нем будет веб-морда самого сайта. для посетителей) на котором php+mysql (база) и есть сервера на которых будут храниться файлы (назовем эти сервера Back - их кол-во не ограничено). Закачка файлов на сервера Back происходит по средствам веб морды на Front сервере, а так же и удаление этих файлов тоже. Доступ к файлам на серверах должны иметь только определенные пользователи (ну т.е. те кто их закачал) Собственно вопросы: 1) Каким методом мне закачивать файлы на сервера Back. Сначала должна происходить закачка на сервер Front, а потом из временной папки на сервер Back. Как мне при помощи ПХП загрузить файлик на другой сервер. Подходит ли для этого FTP протокол, или есть более "правильный инструмент" для перекачки файла посредствам php На другой сервак. 2) Как мне ограничить доступ к файлу на серверах back ? Как это сделать на одном сервер я знаю. Я брал у узера установленную сессию, пробивал по SQL базе и уаля понимал, если доступ к файлу или нет. Но в случае с другим сервером - там жу сессия будет другая... и соответственно всегда будет "БОЛТ" И вообще я правильно мыслю, именно так решаются проекты, объем данных которых явно превышает возможности одного сервера. p.s. надеюсь я правильно донес суть вопроса. Спасибо большое заранее! -------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Это называется распределённая система.
В вашем случае центральный сервер является управляющим и создаёт связи с файловыми серверами через протоколы. Это довольно сложная и обширная тема, лучше литературу почитать по распределённым архитектурам.
CURL А вообще если познания не сильны в таких вещах долго придётся делать, особенно если неограниченное количество файловых серверов. Эту всё архитектуру как то нужно будет синхронизировать. Это сообщение отредактировал(а) Sentox - 27.7.2012, 01:14 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
В базе можешь хранить файл и ID сервера, на котором он находится. Загружать можешь прямиком на сторадж (Nginx + uploadfile). Выдавать так-же. На фронтенде проверяешь на каком сервере файл, редиректишь на сторадж + там еще на всяк случай проверяй принадлежность файла пользователю (nginx + php) (либо сделай названия файлов очень длинными, что-бы подобрать было сложно).
Profit? Добавлено через 38 секунд И зачем траффик лишний раз гонять туда-сюда? |
|||
|
||||
| Sentox |
|
||||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Я уже как то доказывал что централизация управлением более рекомендуема чем транспортный шлюз с клиента от web-обозревателя. Во первых централизация управлением безопасности. Во вторых безопасность от сбоев, то есть
даст сбой если был отправлен файл на файловый сервер, а запрос на управляющий сервер для сохранения параметров не произошёл по какой либо причине (сбой сервера, сбой клиента-отрубило на компе свет,браузер ....), сбой сервера БД и т.д.). То есть отправка файла и сохранение параметров должны быть упакованы в "транзакцию" при которой если был сбой на одном из потоков транзакция анулируется, в случае транспорта от клиента это очень сложно и неудобно реализовать. Так же усложняется ситуация если файлы идентифицированы для конкретного пользователя, что само по себе просто кричит переправь меня через центральный сервер, так как инфа по пользователю только на нём, а вынесение параметров пользователя на клиент для привязки файла к пользователю это плохая практика. В третьих файловые сервера будут заниматься не "своим" делом - хранением, так как будут содержать расширенную логику по обработке файлов, как мимнимум слой безопасности, Front Controller для обработки запросов (согласитесь будет хотя бы простейшая логика распределения файлов по критериям, что потянет за собой расслоение по предметным областям). Хотя на них (файловых серверах) должны быть максимум обработчик протокола между центральным сервером и файловым сервером хотя бы наподобие RPC или JSON и слой шлюза к БД и всё. В результате всё выше перечисленное перевешивает
Это сообщение отредактировал(а) Sentox - 27.7.2012, 02:46 |
||||||
|
|||||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Рекомендую просмотреть ответы пользователей на этом форуме Ипатьев, Feldmarschall, GeneralElectric.
Там были рекомендации как работать с такими вещами. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
Так, ну в этой области я совсем не силен конечно.
Там на файловом сервере будет еще обработчик этого самого файла - точнее если быть то imagick Файлы будут большого размеры, примерно 20 МБ каждый, каждый юзер работает с 10-20 файлами сразу, и таких юзеров много. очень много. Sentox, CURL как я понял более правильно будет использовать. Но как проверить авторизированность пользователся так сказать)? Добавлено через 6 минут и 11 секунд Ну если более точно говорить, то я пользователю даю просто тег <img src="some server/img.php?id=2" и вот на том стороннем сервере идет обработка картинки, но её показывать только тому кто её автор, авторство храниться на первом сервере. как то так. -------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
а что не так с решением монтировать удаленные сервера в локальную файловую систему?
обрабатывать imagemagik'ом, конечно ж, лучше на местах, без перетягивания данных туда-обратно(поставить какой-то менеджер очереди на каждый сервак и вызывать его через тот же curl), но процесс заливки и стягивания файла уж точно никакого оверхеда не вызовет. плюс для контроля доступа можно будет без затей использовать x-send-file |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
skyboy, не мешай им
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
skyboy,
Если не сложно то можешь более подробно на пальцах объяснить. Fortop, я пока ни как ни хочу))))) потому что пока вообще не одуплил принцип работы. -------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
И еще стоит ли в таком случае как то распределять нагрузки на MySQL базу. В данный момент у меня при открытии одной страницы примерно 35 SQL запросов. Много ли это ? Планируется посещаемость в 3 000 в сутки.
-------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
Решил свою проблему. Спасибо. будет позже время напишу как)
-------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |