Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Rozdělení aplikace do více "instancí", ale jenom jedny zdroje

Aktivity
Avatar
Luboš Zápotočný:20.6.2017 13:49

Ahoj,

hned mě opravte jestli je moje myšlenka úplně mimo, ale mám projekt, kde si můžete požádat o vytvoření vlastní instance aplikace na subdoméně.
sub1.domena.cz - Customized(barvy, loga,...) Nette aplikace
sub2.domena.cz - Customized(barvy, loga,...) Nette aplikace

a moje myšlenka byla, jestli neni možné toto sloučit, aby tam nebylo x krát /vendor,... aby ty zdrojové kódy byly jednotné - při upgradu se aktualizují všechny subdomény.

Jde pomocí nette managovat subdomény tímto stylem?
nějak číst "parametr" - subdoménu, z toho s načíst nějaké configy nebo tak nějak?

Zase na druhé stránce, je potřeba zvážit, jestli půjde udělat separátní přihlašování uživatelé na těchto subdoménách.

Co myslíte, jak se to má řešit?

Díky moc
Luboš

 
Odpovědět
20.6.2017 13:49
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Luboš Zápotočný
Petr Čech:20.6.2017 16:34

Dá se to udělat. Prostě všechny subdomény nasměruješ na ten samý index.php v jedné aplikaci, kde si potom pomocí routování vytáhneš subdoménu jako parametr url a dál zpracuješ v aplikaci.

Nahoru Odpovědět
20.6.2017 16:34
the cake is a lie
Avatar
Odpovídá na Petr Čech
Luboš Zápotočný:20.6.2017 16:37

a nebude to pak zlobit v případě, že se uživatel bude chtít registrovat na dvě subdomény nezávislé na sobě? nebude tam nějak zlobit session?

 
Nahoru Odpovědět
20.6.2017 16:37
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:20.6.2017 16:38

pozn.: určitě nedělej něco jako že by každá render/action/han­dle metoda presenteru brala parametr subdomain, místo toho si třeba přepiš metodu startup(), kde pomocí $this->getParameter('subdomain') získáš parametr pohodlněji.

Nahoru Odpovědět
20.6.2017 16:38
the cake is a lie
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Luboš Zápotočný
Petr Čech:20.6.2017 16:41

To by mohlo. Budeš si muset kontrolovat, kam ukládáš jaká data, ale snad všechno v Nette naštěstí umí namespaces. Takže třeba cache, sessions a pod. budeš všechno ukládat třeba do namespace subdom_$subdomain a vše by mělo běžet v pohodě :) Možná se ještě budeš muset pohrabat v konfiguraci Latte enginu, aby se ti šablony cachovaly zvlášť. Ale pořád je to mnohem snazší a lepší než několik (skoro) identických instancí.

Nahoru Odpovědět
20.6.2017 16:41
the cake is a lie
Avatar
Odpovídá na Petr Čech
Luboš Zápotočný:20.6.2017 16:59

a když už by se něco takovéhle povedlo, jak to mám řešit s databází? mám mít jednu, s předponami třeba podle subdomén, nebo více databází? PS. chtěl bych použít doctrine. PS. Nevím jak v configu řešit podmíněné připojení k db.

 
Nahoru Odpovědět
20.6.2017 16:59
Avatar
Odpovídá na Petr Čech
Luboš Zápotočný:20.6.2017 20:22

jo a jak ses zmínit o těch namespace, můžeš mě nasměrovat alespoň, kde bych tyhle věci mohl najít?
Díky

 
Nahoru Odpovědět
20.6.2017 20:22
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Luboš Zápotočný
Petr Čech:20.6.2017 22:16

Nette dokumentace? Cache to bere jako druhý argument konstruktoru, session jako jediný.
https://doc.nette.org/cs/2.4/caching#…
https://doc.nette.org/cs/2.4/sessions#…

Nahoru Odpovědět
20.6.2017 22:16
the cake is a lie
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Luboš Zápotočný
Petr Čech:20.6.2017 22:25

S doctrine nemám zkušenosti, ale z toho co to je usuzuji, že to není problém používat. Já bych asi šel do jedné databáze, kde prostě budeš mít sloupečky s id subdomény a indexem. Mimo to tě asi jen málo hostingů nechá vytvořit libovolný počet DB.
Pokud bys chtěl skladovat velké objemy dat, budou možná oddělené databáze lepší=rychlejší.
Hlavní princip tady je, že se chceš vyhnout duplicitě- je mnohem snazší udržovat jeden větší projekt, který se sám umí třídit a upravovat (a je náročnější na naprogramování), než víc prakticky identických věcí (ze strany programátora, ne klienta, pro kterého je změna barvy úplně jiný web :D ). Tuhle praktiku se nevyplatí používat v případě, že to výkonově nezvládá. Ale to to potom můžeš rovnou nechat běžet na vícero serverech a to je úplně jiný příběh.

Představ si, že musíš u každé instance provést migraci DB. Ručně, protože třeba nemůžeš ke všem DB z jednoho rozhraní a do každé se musíš přihlásit zvlášť - tam nalezneš odpověď.

Editováno 20.6.2017 22:27
Nahoru Odpovědět
20.6.2017 22:25
the cake is a lie
Avatar
Odpovídá na Petr Čech
Luboš Zápotočný:20.6.2017 22:36

a je lepší přidávat id subdomény do tabulek jak popisuješ, nebo dělat nové tabulky s prefixy?

 
Nahoru Odpovědět
20.6.2017 22:36
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Luboš Zápotočný
Petr Čech:21.6.2017 11:13

Já bych všechno centralizoval. Vždyť přeci nechceš mít víc tabulek s identickou strukturou... Ale jak říkám, záleží, co na tom chceš uchovávat za data. Pokud budeš chtít mít v tabulce třeba jen nastavení barviček, obrázků a pod. pro jednotlivé instance, nebude to problém mít v jedné tabulce, protože těch dat bude prostě málo.
Pokud bys chtěl ukládat třeba každý přístup na každou instanci, bude to strašně moc dat a asi by stálo za to používat tabulky s prefixem.
Mohlo by pomoct, kdybys uvedl, co to vlastně má dělat :)

Nahoru Odpovědět
21.6.2017 11:13
the cake is a lie
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.