Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jedna aplikacja php dla kilu osób?
Forum PHP.pl > Forum > PHP
luis2luis
Witam.

Potrzebuje zrobić tak, żeby do jednej aplikacji miało dostęp kilka osób. Iteraz pytanie, jak to zaplanowac.

1. Czy na serwerze zrobić oddzielne katalogi z kopią aplikacji i inną bazą danych? Tutaj łowna wada, to aktualizacja takiej aplikacji, każda osobno trzeba bedzie aktualizowac, ale wszystkie dane ładnie oddzielone, bez obawy o dostęp innych osób do nich.

2. Czy wszystko oprzeć o jedną aplikacje i po prostu logując usera przełączać baze danych? W tym przypadku aktualizacja bedzie łatwa, jednak problem z plikami umieszczanymi przez userów, tak, żeby ine osoby nie miały do nich dostępu.

Prosze o jakas wypowiedź, jak to widzicie?
phpion
Cytat(luis2luis @ 20.05.2016, 15:20:21 ) *
problem z plikami umieszczanymi przez userów, tak, żeby ine osoby nie miały do nich dostępu.

Dla każdego użytkownika stwórz oddzielny folder do uploadu plików.
LowiczakPL
wspólna baza i skrypt dla wszystkich

każdy user ma swoje ID i na jego podstawie serwowane są treści, ustawienia i pliki

prywatne pliki trzymane w wygenerowanym katalogu dla ID usera

/users/uniquefoldername/ albo /users/id_usera/

tak mam to rozwiązane
luis2luis
Cytat(LowiczakPL @ 20.05.2016, 15:27:43 ) *
wspólna baza i skrypt dla wszystkich

każdy user ma swoje ID i na jego podstawie serwowane są treści, ustawienia i pliki

prywatne pliki trzymane w wygenerowanym katalogu dla ID usera

/users/uniquefoldername/ albo /users/id_usera/

tak mam to rozwiązane


Tak, tylko jedna baza, to mimo wszystko za duże ryzyko, nie dopatrze gdzies i wyskoczą dane innego użytkownika, tego nie moge ryzykowac. Na serwerze mam dowolną ilosc baz danych, wiec zakładanie kolejnych nie bedzie problemem. Danego uzytkownika przyisze do wybranej bazy danych i to powinno załatwić sprawe.
Pyton_000
To wszystko zależy od aplikacji. Jak bardzo jest złożona, jaki ruch generuje.
kayman
Cytat(luis2luis @ 20.05.2016, 17:29:51 ) *
Tak, tylko jedna baza, to mimo wszystko za duże ryzyko, nie dopatrze gdzies i wyskoczą dane innego użytkownika, tego nie moge ryzykowac. Na serwerze mam dowolną ilosc baz danych, wiec zakładanie kolejnych nie bedzie problemem. Danego uzytkownika przyisze do wybranej bazy danych i to powinno załatwić sprawe.


ciekawe jak rozwiążesz chociażby logowanie smile.gif
luis2luis
Cytat(kayman @ 20.05.2016, 17:48:32 ) *
ciekawe jak rozwiążesz chociażby logowanie smile.gif


Będzie musiałą być jedna baza, która bedzie przechowywała informacje o użytkownikach i bazy do której ma dostęp?

Podczas logowania łącze się z jedną głowną, a później z odpowiednią wskazaną już bazą.
kapslokk
Cytat
Tak, tylko jedna baza, to mimo wszystko za duże ryzyko, nie dopatrze gdzies i wyskoczą dane innego użytkownika, tego nie moge ryzykowac.

Cytat
Będzie musiałą być jedna baza, która bedzie przechowywała informacje o użytkownikach i bazy do której ma dostęp?

Podczas logowania łącze się z jedną głowną, a później z odpowiednią wskazaną już bazą.

Równie dobrze możesz zrobić błąd i w momencie wybierania "bazy użytkownika" wybrać nie tą co potrzeba i po ptokach tongue.gif Po to aplikacje się testuje, żeby nie było niedopatrzeń.
com
To co próbujesz zrobić nie ma sensu, większe ryzyko masz tworząc milion rożnych baz niż tylko jedną, bo jak gdzieś będziesz miał podatność to od razu w n instancjach taka samą i jak ktoś weźmie sobie te dane z jednej to wyjmie z innych, ale będzie miał na tacy user a ma takie dane i dokładnie te, bez jakiegokolwiek wysiłku, bo wystarczy zrobić dump bazy i mam wszystkie jego rekordy. Zresztą jak sobie niby wyobrażasz, zakłada ktoś nowe konto to co tworzysz mu nowy system? Owszem skaluje sie aplikacje jak tego potrzebujesz ale, automatycznie a nie ręcznie. Tak jak wspomniano po to się robi testy, ma QA, aby takich problemów nie było wink.gif
daniel1302
Jak wyglądała by struktura popularnych portali jeśli myśleli by tj. Ty? Piszesz testy jednostkowe z jak największym pokryciem kodu jeśli boisz się. Testy/ Testy i jeszcze raz Testy. Jeśli chcesz mieć osobne aplikacje to poprostu nie korzystaj z PHP tylko napisz aplikacje desktopową i łącz się z serwerem. Bo to do takich celów jak Ty są aplikacje desktopowe.

Może zainteresuj się dockerem. On pozawala robić kontenery na aplikacje np z wspólną konfiguracją ale np różnymi bazami danych.
com
weź dajmy na to te forum, jak sobie niby wyobrażasz jakbyśmy tu mieli mięć dla każdego usera oddzielna bazę, to jest nie możliwe, czy tam pierwszy lepszy inny system. Nawet mając dla każdego usera oddzielny kontener na dane jak zrobisz błąd to jestem wstanie uzyskać dane innego użytkownika tak czy owak.
phpion
Moim zdaniem osobne bazy to nie jest wcale głupi pomysł. Pamiętajmy, że mówimy tutaj o aplikacji. Sami w pracy mamy właśnie sporą aplikację, która z założenia ma pozwalać na równoczesne prowadzenie kilku klientów na tej samej bazie danych. Praktycznie w każdej tabeli dokładane jest (przykładowo) client_id. Minusy to to, że wszędzie trzeba o tym pamiętać żeby ograniczać dane do danego client_id, ograniczenia unikalności też trzeba zakładać w połączeniu z client_id itd. Moim zdaniem jest to niewygodne i w naszym przypadku lepiej sprawdziłaby się właśnie osobna baza dla każdego klienta. Nie krytykowałbym więc z góry tego pomysłu.
com
phpion tylko, że na tym przecież polega idea relacyjnych baz danych, i nawet jakbyś miał bazę per klient, to jakoś musisz go tam w niej zidentyfikować, zawsze można pokusić się o jakiegoś NoSqla.
luis2luis
Panowie, taki przykład system IAI, kilka tysięcy uruchomionych sklepów, w niektórych po milion towarów, nie sadze, żeby taka ilośc produktów klientów i innych danych siedziął w jednej tabeli. Przykładów takich programów jest wiele.


Muszą być osobne bazy danych, tylko kwestia, jak optymalnie i bezpiecznie uwieżytelniać poszczególnych uzytkowników. Jak tu kolega napisał, można zrobić coś bez bazy sql. I w zalezności od usera łączyć się z wybraną bazą danych. Tylko jak to bezpiecznie zrobic, jak zablokowac dostep do pliku, moze trzymac taki plik z danymi w przestrzeni serwera niedostepnej dla innych, ew. kodowanie haseł.

Cytat(com @ 22.05.2016, 19:56:03 ) *
weź dajmy na to te forum, jak sobie niby wyobrażasz jakbyśmy tu mieli mięć dla każdego usera oddzielna bazę, to jest nie możliwe, czy tam pierwszy lepszy inny system. Nawet mając dla każdego usera oddzielny kontener na dane jak zrobisz błąd to jestem wstanie uzyskać dane innego użytkownika tak czy owak.


forum to zły przykład, bo wszyscy kozystacie z tych damych danych. To dlaczego kolejne fora, z innych serwisów nei sa na jednej bazie ale na osobnej? Nie chodzi o rozbicie ma userów którzy beda zarejestrowani, ale na inne instancje programu. Wyobrażacie sobie takich 300 for na jednej tabeli?

Cytat(phpion @ 24.05.2016, 09:08:30 ) *
Moim zdaniem osobne bazy to nie jest wcale głupi pomysł. Pamiętajmy, że mówimy tutaj o aplikacji. Sami w pracy mamy właśnie sporą aplikację, która z założenia ma pozwalać na równoczesne prowadzenie kilku klientów na tej samej bazie danych. Praktycznie w każdej tabeli dokładane jest (przykładowo) client_id. Minusy to to, że wszędzie trzeba o tym pamiętać żeby ograniczać dane do danego client_id, ograniczenia unikalności też trzeba zakładać w połączeniu z client_id itd. Moim zdaniem jest to niewygodne i w naszym przypadku lepiej sprawdziłaby się właśnie osobna baza dla każdego klienta. Nie krytykowałbym więc z góry tego pomysłu.


A jak takich instancji bedzie kilka set, to moga być grube miliony danych w kazdej tabeli, może to szybko zabić serwer, dodatkowe obdciążenie własnie przez parametr "client_id". Nawet w instancji, która ma kilka wpisów bedzie generowąło spore obciążenie.
kapslokk
Cytat
Panowie, taki przykład system IAI, kilka tysięcy uruchomionych sklepów, w niektórych po milion towarów, nie sadze, żeby taka ilośc produktów klientów i innych danych siedziął w jednej tabeli.

Pewności co prawda nie mam, ale nie sądzę, żeby wszystkie te sklepy stały na jednej aplikacji. Raczej cały skrypt jest kopiowany na osobne serwery i poszczególne sklepy mają swoje własne pliki ze skryptami.
Pyton_000
Ja mogę powiedzieć na przykładzie z autopsji. Pracowałem przy sklepie w modelu SAAS. Skrypty były kopiowane dla każdego klienta, bazy również osobne. Każda instancja miała uwierzytelnianie w 1 wspólnej bazie (rozliczenia, aktywność danego sklepu, loginy adminów itd.)

IAI zapewne działa na podobnej zasadzie.
com
luis2luis wszystkie moje wpisy możesz zignorować, źle zrozumiałem problem, nie pomyślałem, że chodzi ci o SaaS wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.