Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kiedy używać symfony2 (i inne tego typu fw) ?
Forum PHP.pl > Inne > Hydepark
peter13135
Witam jaśnie wielmożnych formumowiczów.

Mam do was pytanie, bo tak się zdarzyło, że od pewnego czasu piszę (jednocześnie ucząc się) symfony2. Moje pierwsze wrażenie, to "ależ to kobyła". Z moich obserwacji wynika, że używa się go głównie do dużych projektów, i to takich które są pisane pod jedną konkretnę stronę. Takie joomle czy wordpressy albo phpbb czy vBulletin nie są napisane w żadnym fw (jeśli się mylę, to poprawcie).

Kieruję do was pytanie: kiedy właściwie należy użyć framerowka, a kiedy nie? A może do tych mniejszych projektów należy użyć mniejszych fw ?

Jeśli dubluję temat, to najmnocniej przepraszam i proszę o linki tongue.gif
Crozin
Cytat
Moje pierwsze wrażenie, to "ależ to kobyła".
Na tle innych - niekoniecznie PHP-owych - frameworków Symfony wcale jakiś strasznie kobylasty nie jest.
Cytat
Takie joomle czy wordpressy albo phpbb czy vBulletin nie są napisane w żadnym fw (jeśli się mylę, to poprawcie).
Większość z nich powstała jeszcze przed "erą frameworków PHP". Ale z tego co kojarzę phpBB4 ma działać w oparciu właśnie o Symfony2.
Cytat
Kieruję do was pytanie: kiedy właściwie należy użyć framerowka, a kiedy nie?
Jeżeli narzędzie (tutaj: framework) w ogóle nadaje się oraz pomoże w szybszym/łatwiejszym/lepszym/tańszym wykonaniu docelowego zadania to powinno się z niego korzystać.
Cytat
A może do tych mniejszych projektów należy użyć mniejszych fw ?
Nie, nie należy. W czym przeszkadza użycie "dużego" (bardzo dziwna klasyfikacja swoją drogą) frameworka przy małym projekcie?
Szymciosek
Też się uczę właśnie Symfony2 i w sumie mogę przyłączyć się do pytania i od siebie coś dodać:

Z tego co mi wiadomo, to nie jest powiedziane, że Symfony2 - Duży FW, nadaje się tylko do dużych projektów, lecz również ma zastosowanie w mniejszych projektach/stronach, np niech sobie będzie strona, która zawiera w sobie 4 podstrony (Home, Gallery, AboutUs, Contact) i myślę, że śmiało może być ona napisana w Symfony2, oczywiście nie będziemy pod nią tworzyć 10 kontrolerów, 100 widoków, wielkiej bazy danych itd, ale nawet jeśli wykorzystujemy jeden kontroler, 4 widoki, 1 base view, a do tego dodatkowo pomocne widoki, które np pokazują nam duże zdjęcie w galerii to i tak Symfony2 się do tego nada.

skowron-line
Nie ma podziału na duży i mały FW.
Do każdego projektu nadaje się FW nie ważne czy to jest Kohana czy Zend czy Symfony2, wszystko zależy od umiejętności programisty. Zend jest zbiorem wielu klas więc każdą z nich wykorzystać osobno w innym FW.

To że ktoś mówi że Symfony2 nie nadaje sie do małych projektów, a Kohana nie nadaje sie do dużych jest głupcem, bo w większości przypadków ta osoba nie potrafi podać jednego sensownego powodu dla którego dany FW nie sprawdzi się przy określonej aplikacji.

Sumując. FW zawsze i w każdej aplikacji.
Szymciosek
Znajomy mi napisał, że mały projekt zadziała z dużym FW, ale jest wtedy ładowane mnóstwo niepotrzebnych danych, uruchamia się wtedy cały fw...

"To tak jakbyś uruchomił kombajn do skoszenia trawnika"

Co o tym możecie powiedzieć ?
Crozin
@Szymciosek: Przede wszystkim co z tego, że wiele niepotrzebnych rzeczy może się uruchomić?

Przy małym projekcie w większości przypadków nawet nie warto będzie bawić się w konfigurację FW celem ich wyłączenia.
skowron-line
Cytat(Szymciosek @ 29.08.2012, 14:14:35 ) *
Znajomy mi napisał, że mały projekt zadziała z dużym FW, ale jest wtedy ładowane mnóstwo niepotrzebnych danych, uruchamia się wtedy cały fw...

"To tak jakbyś uruchomił kombajn do skoszenia trawnika"

Co o tym możecie powiedzieć ?

Ważne jest aby wybrać narzędzie które najlepiej będzie pasowało do danego zadania.
Szymciosek
Cytat(Crozin @ 29.08.2012, 16:18:29 ) *
@Szymciosek: Przede wszystkim co z tego, że wiele niepotrzebnych rzeczy może się uruchomić?

Przy małym projekcie w większości przypadków nawet nie warto będzie bawić się w konfigurację FW celem ich wyłączenia.


Konsultując się dalej ze znajomym, twierdzi że niepotrzebnie jest obciążany serwer niepotrzebną ilością danych.


Cytat(skowron-line @ 29.08.2012, 16:18:57 ) *
Ważne jest aby wybrać narzędzie które najlepiej będzie pasowało do danego zadania.

Czyli wg Ciebie jest warto bawić się w wyłączenie np Doctrine, jeśli z niego nie korzystam ? Za to Crozin zaś twierdzi, że nie warto się bawić w to przy małym projekcie.
peter13135
jak sobie do symfony2 dodałem pare bundli to wyszło mi, że cały folder ma ponad 100mb. Wrzucanie tego na ftp mi się niezbyt podoba :/
Crozin
Cytat
Konsultując się dalej ze znajomym, twierdzi że niepotrzebnie jest obciążany serwer niepotrzebną ilością danych.
Oczywiście, że każda dodatkowa, zbędna operacja to jakieś tam zwiększenie obciążenia serwera, ale:
1. Przy małych projektach to dodatkowe obciążanie jest nieodczuwalne. Co za różnica czy strona wygeneruje się w 0.018 czy 0.02 sekundy? Co za różnica czy jakieś dodatkowe śmieci się tam robią, skoro serwer jest jeszcze wstanie obsłużyć 2, 5 czy 25 razy większy ruch w "komfortowym" czasie?
2. Jak zaczynają pojawiać się problemy z wydajnością to wprowadza się jakieś podstawowe poprawki optymalizacyjne - wyłącza co niepotrzebne, zwiększa się ilość rzeczy lądujących w różnego rodzaju cache (przetworzone dane biznesowe, akceleratory PHP, reverse-cache itp.). Jeżeli nadal istnieją problemy z wydajnością przenosi się na mocniejszą maszynę - bo jest to zazwyczaj śmiesznie tanie rozwiązanie. Dopiero ostatnim krokiem jest babranie się z dziesiątkami drobnych optymalizacji.
3. Jeżeli ideologicznie przeszkadza Ci wykonywanie przez serwer zbędnych operacji zapomnij w ogóle o PHP. Język sam w sobie jest powolny, a i środowisko w jakim pracuje (żądanie -> władowanie wszystkiego -> wykonanie kodu -> odpowiedź -> zakończenie procesu) nie sprzyja optymalnemu kodowi.

Oczywiście, jeżeli jakaś tam optymalizacja jest łatwa do wdrożenia, np. wyłączenie całego Doctrine'a w Symfony2 to usunięcie dwóch linijek z AppKernel.php/autoloader.php, to powinno się to zrobić już na etapie tworzenia projektu.

Cytat
jak sobie do symfony2 dodałem pare bundli to wyszło mi, że cały folder ma ponad 100mb. Wrzucanie tego na ftp mi się niezbyt podoba :/
Zacznijmy od tego, że na serwer nie wrzuca się całych repozytoriów GIT-a, bo to one tyle zajmują. Zresztą kod bibliotek (3rd-party-code) możesz pobrać sobie już na serwerze, po co wrzucać to przez FTP.
Szymciosek
Cytat(peter13135 @ 29.08.2012, 16:33:59 ) *
jak sobie do symfony2 dodałem pare bundli to wyszło mi, że cały folder ma ponad 100mb. Wrzucanie tego na ftp mi się niezbyt podoba :/


Parę bundle za pomocą git i
Kod
php bin/vendors --install


to wiedz, że foldery git będą zajmowały właśnie tak dużo ze względu na to, że zawierają kompletną historię każdego pakietu...
Możesz to łatwo usunąć za pomocą komendy:
Kod
find vendor -name .git -type d -exec rm -fr {} \:
irmidjusz
Jeśli chodzi o Joomle, to została napisana w swoim własnym frameworku (który nawet nie jest wydzielony od właściwego CMSa). Takie specyficzne rozwiązanie, ale pod Joomle wszystko się pisze zgodnie z konwencją tego frameworka.
usb2.0
kiedy używać?
kiedy tylko można:P
wg. świetny framework, ogromne comunity, całą masa bundli gotowych, nie trzeba pisać czegoś po raz n-ty
wrzucanie na ftp to najciekawszych zajęc nie należy ale podobnie jest w przypadku innych fw.
Ja polecam!
Spawnm
W przypadku innych fw to wgrywasz ~300KB, dodajesz w configu dane bazy i możesz już tworzyć wink.gif
Oczywiście inne, mniejsze fw nie dadzą ci w standardzie generatora kodów kreskowych itd. Ale jak często robiąc stronę firmy, prywatnej osoby czy jakiś cms lub crm a nawet gierkę musisz generować takie cuda? Większość aplikacji to crudy + modele przetwarzające jakieś dane, a w tego typu aplikacjach każdy fw jest ok jeśli pisze ci się w nim szybko i wygodnie. Większy fw warto wybrać jeśli wiemy że to co piszemy będzie rozwijane przez kolejne x lat i wszystko może się tam pojawić. Ale nawet w takim wypadku zawsze można wtedy dograć odpowiednią bibliotekę której akurat fw nam nie dostarczył.
usb2.0
niestety jako fanboy symfony mam inne zdanie : D
Szymciosek
Podziel się wink.gif
marcio
Jak juz ktos wspomnial nikt na serwer nie wrzuca caelgo projektu symfony2 raz z bundlami i assets.
Wgrywamy tylko nasza aplikacje a reszte bundli instalujemy przez vendors.

Ja aktualnie jestem na praktykach jako mlodszy programista PHP pisze w SYmfony2 i musze powiedziec ze moze sie nadawac do wszystkiego czemu nie wink.gif
Jego opanowanie zajmuje jakis miesiac przynajmniej dla mnie, jest masa plikow/katalogow.
Jest do poznania Doctrine(bo propel jest jakis glupawy),twig i kilka innych.

Ja polecam choc malo znam to mnie sie podoba
Szymciosek
Cytat(marcio @ 31.08.2012, 00:44:04 ) *
Jak juz ktos wspomnial nikt na serwer nie wrzuca caelgo projektu symfony2 raz z bundlami i assets.
Wgrywamy tylko nasza aplikacje a reszte bundli instalujemy przez vendors.


Aplikacje czyli co ? Jakie foldery/pliki ? Również zaczynam przygodę z Symfony2
Jeszcze mam takie pytanie dotyczące vendors, na pewnej stronie wyczytałem, że podczas ich aktualizacji do nowszej wersji możemy być zdziwieni, gdy projekt przestanie działać (to tyczy się composera). I tu pytanie, skąd mam wiedzieć co mogę/warto aktualizować, a co jest ryzykowne ?
marcio
Czytajac changelog bundli czy sa jakies wiekszy zmiany w API/konfiguracji/bazie

Dodajesz tylko twoje pliki do projektu bez zadnych bundli ktore sa ci potrzebne do dzialania aplikacji.
Czyli bez doctrine,twig-a itp..itd..
Potem ktos sciaga twoja aplikacji i za pomoca vendors instaluje wszystkie brakujace moduly ktore masz opisane w deps/deps.lock
Szymciosek
No tak, w przypadku aplikacji, które są dostępne dla innych to się zgodzę, że zbędne jest wrzucanie folderu vendors do całej paczki, ale gdy projekt ma być online (np strona internetowa), to wtedy powinny być wszystkie foldery, albo całe vendors umieszczone np w usr/share.
marcio
No tak ale to kazdy ma lokalnie zainstalowany serwer z projektem robi w nim zmiany i potem robi commit plikow z projektu bez zbednych bundli.

Przeciez mija sie z celem testowanie aplikacji online i wrzucanie plikow na ftp.
Korzystamy z git-a/svn-a
Szymciosek
Co masz na myśli o korzystaniu z git/svn ? Mogę tam trzymać swoje projekty, a raczej bundle (ewentualnie co jeszcze ?) i uruchamiać je na serwerze ?

Jeszcze pytanko, gdzie sprawdzić jaki doctrine jest najnowszy ? Na stronie doctrine widnieje 2.2.2 ( http://www.doctrine-project.org/blog/doctr...2-released.html ), a znowu gdzieś znalazłem 2.2.3 ( http://www.doctrine-project.org/projects/common.html ), ale to chyba raczej dotyczy common ? Czym to się różni ?
marcio
Co do doctrine to ci nie powiem.
Na git-a/svn-a wrzucasz tylko pliki z projektu a kazdy programista z osobna powinien miec lokalny serwer by moc testowac/debugowac kod lokalnie i gdy wszystko juz jest ok wrzucic kod do repozytorium zeby potem online na jakims serwerze byl dzialajacy kod.

Przynajmniej my tak robimy w zespole i uwazam to za dobra praktyke!
rzymek01
Osobiście nie widzę przeszkód jeśli chodzi o wrzucenie całego symfony do repo,
wystarczy sklonować repo, zmienić config i już wszystko działa smile.gif
marcio
Cytat(rzymek01 @ 1.09.2012, 11:56:24 ) *
Osobiście nie widzę przeszkód jeśli chodzi o wrzucenie całego symfony do repo,
wystarczy sklonować repo, zmienić config i już wszystko działa smile.gif

No tak przeszkod nie ma ale jak lubisz wrzucac 20mb-50mb to inna sprawa.
A czesto sa nowe wersje bundli wiec dobra praktyka wedlug mnie jest wrzucac tylko pliki naszego projektu.
Theqos
Btw jak komuś żal ładowania całego symfony to może pobawić się micro symfony http://silex.sensiolabs.org/
rzymek01
Cytat(marcio @ 1.09.2012, 19:25:52 ) *
No tak przeszkod nie ma ale jak lubisz wrzucac 20mb-50mb to inna sprawa.
A czesto sa nowe wersje bundli wiec dobra praktyka wedlug mnie jest wrzucac tylko pliki naszego projektu.


jak jest nowa wersja, to do repo przecież nie idzie wszystko, tylko zmiany, tak samo tylko zmiany są pobierane,
a wrzucenie 50 MiB, zależy od prędkości łącza smile.gif
usb2.0
hmm a z innej beczki co by nie spamować,
możecie polecić darmowy (chwilowo niestety:/) hosting pod Symfony2?
t.j. z php 5.3.2
xdev
Cytat
Z tego co mi wiadomo, to nie jest powiedziane, że Symfony2 - Duży FW, nadaje się tylko do dużych projektów, lecz również ma zastosowanie w mniejszych projektach/stronach, np niech sobie będzie strona, która zawiera w sobie 4 podstrony (Home, Gallery, AboutUs, Contact) i myślę, że śmiało może być ona napisana w Symfony2, oczywiście nie będziemy pod nią tworzyć 10 kontrolerów

To nie lepiej zainstalować CMS-a zamiast się męczyć z kobylastym frameworkiem, żeby dodać głupi kontroler do 4 podstron i 1 widok do galerii? Zwłaszcza, że ani to nie będzie szybsze od tego gotowego CMS-a ani tego szybciej nie wdrożysz?
irmidjusz
Dokładnie, często wszystko, co potrzeba, to gotowy CMS, na którym się najszybciej postawi stronkę smile.gif
Na frameworku to się robi własny portal, gdy z jakiegoś powodu nie można wykorzystać gotowego CMSa, w którym wszystko co potrzeba jest już zrobione (bądź takiego nie ma) smile.gif Ale i tak jak się dobrze zna jak programować pod konkretnego CMSa, to często szybciej i łatwiej jest dorobić/przerobić w nim potrzebne ficzery.
peter13135
Odkopuję temat.
Wszelkie systemy for dyskusyjnych jakie znam nie są oparte o framework. Pewnie mają jakieś tam swoje wbudowane elementy frameworka jak klasa do obsługi bazy danych czy system szablonów.
Czy napisanie forum dyskusyjnego w symfony2 i wypuszczenie go jako darmowy skrypt dla wielu użytkowników internetu (tak jak wypuszczane jest choćby phpbb) ma sens ?
Bo mam pare wątpliwości
1. Symfony2 to jednak kobyła, użytkownik będzie musiał pare bitów więcej przesłać na serwer (nie wiem na ile to mocny argument)
2. Jeśli robię coś dla "miliona" użytkowników, to warto by było to dość szybkie/optymalne, czy symfony z racji na swoją wielkość nie przyczynia się do zamulania ? Choćby doctrine.

Tak jakoś korci mnie, żeby napisać takie forum, głównie dla własnego doświadczenia, ale jakby to jakoś ładnie mi wyszło i ktoś chciałby z tego korzystać to nie miałbym nic przeciwko. Czy to dobry pomysł ?
Wicio
O ile mi wiadomo to własnie phpBB4 jest tworzone przy użyciu Symfony2.
Crozin
Cytat
1. Symfony2 to jednak kobyła, użytkownik będzie musiał pare bitów więcej przesłać na serwer (nie wiem na ile to mocny argument)
Raczej słaby. Co za różnica czy wgrasz sobie archiwum (zip/tar/cokolwiek) które będzie ważyć 1 Mib czy 15 Mib?
Cytat
2. Jeśli robię coś dla "miliona" użytkowników, to warto by było to dość szybkie/optymalne, czy symfony z racji na swoją wielkość nie przyczynia się do zamulania ? Choćby doctrine.
Większość elementów Sf2 nie jest nawet uruchamiana w trakcie obsługi typowego żądania, a z Doctrine nikt nie każe Ci korzystać jeżeli uznasz, że jest ono wąskim gardłem.
rzymek01
zgoda z tym co napisał Crozin,
może nie mam wielkiego doświadczenia z Symfony2, ale z tego co już zdążyłem się zorientować to na produkcji jest szybkie jak diabli smile.gif

cache + akcelerator na serwerze typu apc też swoje robi
Szymciosek
Również zgadzam się z przedmówcami, nie ma z tym żadnego problemu, wszystko chodzi szybko, również jestem początkujący, może nie stworzyłem jeszcze wielkich aplikacji... ale na razie jest ok
rafio
Cytat(peter13135 @ 27.09.2012, 11:46:49 ) *
Wszelkie systemy for dyskusyjnych jakie znam nie są oparte o framework.


Te fora wywodzą się z czasów kiedy FW w PHP były novum. Jakie miałeś znane i popularne FW do PHP kiedy powstawało phpBB3, MyBB, SMF czy takie IPB 3?

Rozejżyj się dziś:

- phpBB4 ma być oparte na Sf 2
- MyBB 2 ma być oparte na Yii 2
- FluxBB ma byś oparty na Laravelu
- xenForo jest oparte na ZF


Rozmiar uploadu jest problemem kiedy trzeba stracić cały dzień na wysłanie forum na server, albo kiedy trzeba ładować pliki po kilka razy bo np. update położył forum.
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.