konto usunięte

Temat: Jaki micro framework?

Dariusz P.:
4. Debugger
To jest najwolniejsza kobyła.

A co w przypadku jak postawisz tą aplikację na S2 na hostingu i by się np. okazało, że na wersji produkcyjnej klient coś by tam wykrył a Ty np. to przeoczyłeś(może się zdarzyć)? Czy w ogóle PHP i tym frameworku jest np. możliwość wysłnia na mail programisty informacji o błędzie który wystąpił (przyspieszyłoby to poprawki)? Bo np. można by przechwycić HTTP Exception 404 albo HTTP Exception 500 i wygenerować odpowiednie własne strony z komunikatami dla użytkownika, natomiast zastanawiam się jak by można było przechwycić stack trace i logi żeby to było wysyłane na maila?

konto usunięte

Temat: Jaki micro framework?

Dariusz R.:
Dariusz P.:
4. Debugger
To jest najwolniejsza kobyła.

A co w przypadku jak postawisz tą aplikację na S2 na hostingu i by się np. okazało, że na wersji produkcyjnej klient coś by tam wykrył a Ty np. to przeoczyłeś(może się zdarzyć)? Czy w ogóle PHP i tym frameworku jest np. możliwość wysłnia na mail programisty informacji o błędzie który wystąpił (przyspieszyłoby to poprawki)? Bo np. można by przechwycić HTTP Exception 404 albo HTTP Exception 500 i wygenerować odpowiednie własne strony z komunikatami dla użytkownika, natomiast zastanawiam się jak by można było przechwycić stack trace i logi żeby to było wysyłane na maila?

S2 używa monologa. Spokojnie możesz go ustawić żeby wysyłał Ci maile. Zresztą dziwne by było gdybyś tego nie zrobił:
http://symfony.com/doc/current/cookbook/logging/monolo...

Tu masz więcej przepisów:
http://symfony.com/doc/current/cookbook/logging/index....

Zresztą dla chcącego nic trudnego. Znam projekty na S2 gdzie powiadamiany możesz być przez SMS. Tak długo jak Twoja aplikacja jest w miarę stabilna nie jest to kłopotem. W zeszłym roku robiłem to przy jednym projekcie. Użyliśmy wtedy smsapi.pl, kupiliśmy pakiet 1000 sms-ów (zasilasz zwyczajnie swoje konto i masz pakiet do wyczerpania) i jeżeli coś było nie tak to szła wiadomość.

Dodatkowo S2 jest mocno supportowane przez zewnętrzne narzędzia. Jednym z tych które chwalę najbardziej jest New Relic. Genialne narzędzie do monitorowania produkcji (jeżeli możesz doinstalować rozszerzenie PHP). Narzut na Twoją aplikację jest na tyle znikomy że można go swobodnie pominąć a daje Ci wszystko co potrzebujesz:
http://newrelic.com/php/symfony
i żeby było zabawnie, w pełni integruje się z Symfony dając Ci odpowiednio zmodyfikowane raporty (gdzie dostajesz np oprócz informacji o błędzie php, adres strony, nazwę routa, przypisanego kontrolera itp itd etc...Ten post został edytowany przez Autora dnia 28.06.15 o godzinie 14:23
Przemysław Mierkowski

Przemysław Mierkowski Software Developer

Temat: Jaki micro framework?

Jarosław O.:
Dariusz R.:
Jarosław O.:
W zasadzie funkcjonalność S2 mnie przekonała. Odpycha mnie jeszcze ta "słynna" wydajność takiej strony. I nie do końca chodzi mi o pojedynczą stronę.

Nie wiem czy to jest akurat (przynajmniej na dedyku) powód do tego żeby kierować się taką wydajnością, bo jakby nie było zawsze wąskim gardłem będzie sama baza danych a sprzęt jest dzisiaj tak wydajny, że zastanawiam się ile tu tak naprawdę w takim przypadku można ugrać?

No to jednak zdecydowałem się poznać lepiej Symfony2. I niemiłe zaskoczenie. Prosta strona ładuje mi się w minimum 1,5s (zdarza się ponad 3). Podobna funkcjonalność na CodeIgniter2 łądowała się w 0,2s. Zaznaczam, że to bez dodatkowego cache'owania, ale i tak wynik mnie poraził...


Włącz sobie w CI xdebug + webgrid dla przykładu i zobacz o ile kod zwolni. SF2 dlatego w trybie dev tak muli, bo zbiera od groma informacji oraz ma wyłączone wszystkie cache.

Miarodajnie powinieneś porównać SF2 w trybie prod z włączonymi wszystkimi cache z CI, który także ma wszystko włączone. Zapewne CI było by szybsze, ale o kilkanaście %, a nie o kilkaset % na podobnym kodzie.

konto usunięte

Temat: Jaki micro framework?

Xdebug'a zawsze mam włączonego:-) Muszę więc zobaczyć jak S2 działa w produkcyjnym. Dzięki.

konto usunięte

Temat: Jaki micro framework?

Jarosław O.:
Xdebug'a zawsze mam włączonego:-) Muszę więc zobaczyć jak S2 działa w produkcyjnym. Dzięki.

Xdebug nie robi takiego narzutu jeżeli nie masz włączonego profilera. Bardziej chodzi o przebudowę cache.

konto usunięte

Temat: Jaki micro framework?

Przerabiam właśnie ten oto fajny tutorial Symfony 2 i prawdę mówiąc jakby się trochę bliżej przyjrzeć temu, aplikacja tego typu jest prawdę mówiąc dość skomplikowana.

http://tutorial.symblog.co.uk/

I tak się też zastanawiam nad korzyściami z użycia S2 w takich aplikacjach web tego typu, bo równie dobrze można by użyć tu i Phalcona, CodeIgnithea, Kohana czy CakePHP. Jak dla mnie korzyść w rozumieniu mniej roboty jest tu wątpliwa. Mówię o sytuacji kiedy to przyjdzie do napisania takiej aplikacji od początku, gdzie trzeba mieć jeszcze opanowane HTML, CSS, JS i wygląda mi na to, że S2 jest dobrym wyborem ale do czegoś poważniejszego a nie jakiś takich w miarę prostych aplikacji typu blog czy wizytówka firmowa, gdzie bez problemu można by sobie poradzić wykorzystując inne frameworki jak tu wymieniłem.
Andrzej Prażmo

Andrzej Prażmo programista .NET,
właściciel firmy SEE
Software

Temat: Jaki micro framework?

Dariusz R.:
na to, że S2 jest dobrym wyborem ale do czegoś poważniejszego a nie jakiś takich w miarę prostych aplikacji typu blog czy wizytówka firmowa, gdzie bez problemu można by sobie poradzić wykorzystując inne frameworki jak tu wymieniłem.
Do prostych wizytówek masz "fafnaście" CMSów. Po co strzelać do wróbla z armaty? Ja osobiście wybrałem S2 z uwagi na to, że najbliżej mu pod względem architektury do ASP.NET MVC oraz ze względu na tryb developerski, który naprawdę jest przydatny. Zgodzę się, że na pierwszy rzut oka jest to dość skomplikowany framework i sam pamiętam, ile na początku jobów wysłałem w kierunku monitora ale jak już się to ogarnie, to już się zazwyczaj przy tym zostaje.

konto usunięte

Temat: Jaki micro framework?

Andrzej P.:
Do prostych wizytówek masz "fafnaście" CMSów. Po co strzelać do wróbla z armaty?

Spróbuj realizować coś dedykowanego, specjalnie pod potrzeby klienta który albo nie wie czego chce, albo w trakcie pracy się okazuje, że coś tam trzeba dodać. CMS-y jako gotowce są przygotowane chyba specjalnie pod dużą ilość tanich stronek www z mniej więcej podobnymi funkcjami. Tak samo jak współdzielone hostingi które są tanie, więc dla przykładu jak klienta nie stać na coś droższego, to też wątpię żeby wybrał inny hosting niż współdzielony.

Ja się nawet nie mam zamiaru uczyć w kierunku Wordpressa, Joomli, Magento czy innych takich wynalazków. S2 jest faktycznie wart zainteresowania, tylko tak się zastanawiam czy w przypadku nawet czegoś poważniejszego typu serwis społecznościowy, faktycznie S2 daje znacząco mniejszą ilość pracy. Mówię tu oczywiście o sytuacji kiedy ktoś jest tym tzw. Full Stack Developerem i ma zrealizować praktycznie wszystko.

Nie wiem jak tam w przypadku Phalcona i jakie on ma narzędzia typu profiler i inne służące do wykrywania błędów, natomiast jak miałem do czynienia z tym Kohana v. 3.2, uważam to co oferuje za zadowalające. Poza tym w przypadku jakichkolwiek błędów, ścieżka gdzie on wystąpił wyskakuje bardzo szybko a nie jak w przypadku S2 kilka sekund a nawet więcej. No ale ja mam dość stary sprzęt, więc może to dlatego.

ASP.NET MVC jest o wiele ciekawsze od PHP, oczywiście na tym też można by stawiać wizytówki firmowe, sklepy internetowe tylko nie wiem czy wybór będzie słuszny dla klientów którym zależy w wielu przypadkach na jak najniższej cenie.

konto usunięte

Temat: Jaki micro framework?

Mi właśnie nie odpowiada to pokazywanie błędów. Zawsze w S2 pokazuje mi w innym miejscu niż mam faktycznie.
Poza tym nie mogę opanować zależności między routami a trybem deweloperskim i produkcyjnym. W tej chwili mam sytuację, że w trybie deweloperskim strony mi działają, w produkcyjnym mam błąd 500. Wcześniej miałem w deweloperskim poprawne działanie, a w produkcyjnym 404, za to dostępny adres app/example, co nie działa w deweloperskim. Pewnie trzeba zrozumieć to działanie i wtedy staje się prostsze.

konto usunięte

Temat: Jaki micro framework?

Jarosław O.:
Mi właśnie nie odpowiada to pokazywanie błędów. Zawsze w S2 pokazuje mi w innym miejscu niż mam faktycznie.
Poza tym nie mogę opanować zależności między routami a trybem deweloperskim i produkcyjnym. W tej chwili mam sytuację, że w trybie deweloperskim strony mi działają, w produkcyjnym mam błąd 500. Wcześniej miałem w deweloperskim poprawne działanie, a w produkcyjnym 404, za to dostępny adres app/example, co nie działa w deweloperskim. Pewnie trzeba zrozumieć to działanie i wtedy staje się prostsze.

Rzuć przykład takiego błędu bo nie chce mi się coś wierzyć. Co do dev i prod to pamiętaj że S2 ma osobną konfigurację na routing dla dev i prod. Działa to w ten sposób że dla dev możesz sobie ustawić własne parametry która nadpisują parametry produkcyjne. Szalenie wygodne. Przykładowo wolisz raczej żeby maile nie wychodziły podczas testowania tylko były kierowane na Twoją skrzynkę pocztową prawda?

Co do 500 na prod, masz w app/log/prod.log info co się stało. Mimo że błędy są wyciszone w trybie produkcyjnym, nadal są logowane.
Andrzej Prażmo

Andrzej Prażmo programista .NET,
właściciel firmy SEE
Software

Temat: Jaki micro framework?

Dariusz R.:
Andrzej P.:
Do prostych wizytówek masz "fafnaście" CMSów. Po co strzelać do wróbla z armaty?

Spróbuj realizować coś dedykowanego, specjalnie pod potrzeby klienta który albo nie wie czego chce, albo w trakcie pracy się okazuje, że coś tam trzeba dodać. CMS-y jako gotowce są przygotowane chyba specjalnie pod dużą ilość tanich stronek www z mniej więcej podobnymi funkcjami. Tak samo jak współdzielone hostingi które są tanie, więc dla przykładu jak klienta nie stać na coś droższego, to też wątpię żeby wybrał inny hosting niż współdzielony.
Trochę demonizujesz. Ja akurat specjalizuję się w Joomli i wtyczka pn. Sourcerer załatwia wiele nawet bardzo wymyślnych życzeń klientów. Napisanie własnej wtyczki też nie jest jakoś szczególnie trudne a na pewno jest mniej pracy niż tworzenie od podstaw własnego panelu administracyjnego do zarządzania treścią. Wszystko jest kwestią decyzji na etapie analizy.

konto usunięte

Temat: Jaki micro framework?

Dariusz P.:
Jarosław O.:
Mi właśnie nie odpowiada to pokazywanie błędów. Zawsze w S2 pokazuje mi w innym miejscu niż mam faktycznie.
Poza tym nie mogę opanować zależności między routami a trybem deweloperskim i produkcyjnym. W tej chwili mam sytuację, że w trybie deweloperskim strony mi działają, w produkcyjnym mam błąd 500. Wcześniej miałem w deweloperskim poprawne działanie, a w produkcyjnym 404, za to dostępny adres app/example, co nie działa w deweloperskim. Pewnie trzeba zrozumieć to działanie i wtedy staje się prostsze.

Rzuć przykład takiego błędu bo nie chce mi się coś wierzyć. Co do dev i prod to pamiętaj że S2 ma osobną konfigurację na routing dla dev i prod. Działa to w ten sposób że dla dev możesz sobie ustawić własne parametry która nadpisują parametry produkcyjne. Szalenie wygodne. Przykładowo wolisz raczej żeby maile nie wychodziły podczas testowania tylko były kierowane na Twoją skrzynkę pocztową prawda?

Co do 500 na prod, masz w app/log/prod.log info co się stało. Mimo że błędy są wyciszone w trybie produkcyjnym, nadal są logowane.

Dzięki za wskazanie miejsca zapisywania błędów. Zobaczę. Możesz rzucić linkiem do opisu jak wygląda to nadpisywanie routów w dev? Jak sobie nie poradzę, to najwyżej wrzucę na GITa i Ci wyślę dane.

konto usunięte

Temat: Jaki micro framework?

U mnie też jest to samo na app.php (środowisko produkcyjne). Patrząc po logach na bazie tego Symbloga co go tu podałem wyżej, Error 500, to co pisze w logu (app/logs/prod.log):


[2015-06-29 17:32:49] request.INFO: Matched route "BloggerBlogBundle_homepage". {"route_parameters":{"_controller":"Blogger\\BlogBundle\\Controller\\PageController::indexAction","_route":"BloggerBlogBundle_homepage"},"request_uri":"http://localhost/"} []
[2015-06-29 17:32:50] security.INFO: Populated the TokenStorage with an anonymous Token. [] []
[2015-06-29 17:32:50] request.CRITICAL: Uncaught PHP Exception Twig_Error_Runtime: "The "native_profiler" extension is not enabled in "BloggerBlogBundle:Page:index.html.twig" at line 2." at D:\Moje dokumenty\NetBeansProjects\php\symblog\app\cache\prod\classes.php line 3722 {"exception":"[object] (Twig_Error_Runtime(code: 0): The \"native_profiler\" extension is not enabled in \"BloggerBlogBundle:Page:index.html.twig\" at line 2. at D:\\Moje dokumenty\\NetBeansProjects\\php\\symblog\\app\\cache\\prod\\classes.php:3722)"} []


Wcześniej było 404 ale później dałem:


app/console --env=prod cache:clear


oraz:


php app/console cache:warmup --env=prod --no-debug


tu podpowiedzi:
http://stackoverflow.com/questions/11862468/symfony2-d...

i nie pomogło.

Natomiast jak użyć app_dev.php to nie ma problemu. Natomiast w app_dev.php jest wpis:


$kernel = new AppKernel('dev', true);


I jak np. zastąpiłem to 'dev' na 'prod' to mi znikł już ten profiler ale z tego co widzę to się robi cache w katalogu wskazującym na środowisko produkcyjne (app/cache/prod)

Poszukam sobie coś na stacku, tam pewnie są podpowiedzi.

konto usunięte

Temat: Jaki micro framework?

Andrzej P.:
Trochę demonizujesz. Ja akurat specjalizuję się w Joomli i wtyczka pn. Sourcerer załatwia wiele nawet bardzo wymyślnych życzeń klientów. Napisanie własnej wtyczki też nie jest jakoś szczególnie trudne a na pewno jest mniej pracy niż tworzenie od podstaw własnego panelu administracyjnego do zarządzania treścią. Wszystko jest kwestią decyzji na etapie analizy.

Moim zdaniem równie dobrym rozwiązaniem byłoby może stworzenie do własnych potrzeb jakiegoś generatora w postaci jakiegoś pliku pchar, tak jak composer.pchar, tylko że ten jest wykorzystywany w Symfony. To by mogło zaoszczędzić wiele pracy i można by to bez problemu wykorzystać do wspomagania pracy z frameworkami.

Zakładam tu że masz wymagania w postaci szczegółowej specyfikacji, to sobie można zdecydować, czy rozwiązać coś na Joomli czy na frameworku. Wiem że jest sporo roboty przy takim panelu admina, dlatego myślę nad jakimś generatorem pchar, który by generował kod PHP, HTML, CSS, JS bo faktycznie tej pracy jest dość dużo nawet jak tworszysz w miarę prostą stronę.

konto usunięte

Temat: Jaki micro framework?

Dobra, bez cytowania Panowie bo za dużo tego :-)

@Dariusz Rorat, to tylko pierwsze wrażenie, głównie z uwagi na ilość opcji. Tak naprawdę najprostszy krok do zrobienia własnego widoku to:

1. stworzenie kontrolera
2. stworzenie szablonu
3. dodanie wpisu do routingu

A jeżeli użyjesz template controller (FrameworkBundle:Template:template) to możesz pominąć obecność kontrolera. Przydaje się jak potrzebna Ci statyczna strona bez żadnej logiki.

Nie zgodzę się też że nie nadaje się do prostych rzeczy. W zasadzie o ile nie potrzebna Ci diabelska wydajność jaką mają mikro frameworki (pozbawione wszystkich wspomagaczy) ani nie oszczędzasz czasu z użyciem jakiegoś cms-a to S2 jest Twoim konikiem. Tylko pisz w nim jak należy.
Tzn to co robisz powinno być bundlem (modułem) i powinno mieć możliwość konfiguracji (polecam semantyczną konfigurację z S2, będzie pilnował czy ktoś Ci nie poknocił configa). Efekt? Po paru projektach będziesz miał moduły od galerii, bloga, forum, wszelakiej maści "landing page"-ów, formularzy kontaktowych itp. Mam też trochę modułów które służą za wspomagacze (np interaktywny panel do konsoli symfony dla cli), są uniwersalne i pasują do każdego projektu.
Tzn coraz częściej będziesz serwisy składał z klocków niż je pisał. Przykładem np jest bogaty wybór bundli od Knp, Sonata Admin Bundle i inne narzędzia które dostarczają typowe komponenty przeciętnego projektu.

Do NAPRAWDĘ prostych rzeczy, jak mówił @Andrzej Prażmo masz CMS-y. Ja byłem niejako zmuszony poznać jeden zwany Silverstripe. Taki jeden framework z CMS. O ile mogę mu to i owo zarzucić i generalnie nie lubię tego jak jest zrobiony o tyle nie odmówię mu jednego - możesz postawić stronę www z panelem administracyjnym (wygodnym i estetycznym) w jeden wieczór. SS ma kupę magii która wkurza ale z drugiej strony odbiera Ci niemal cały proces tworzenia projektu i zostawia z tym żeby dopisać kontrolery, zrobić do nich widoki i wyklikać strukturę (bazę tworzy i aktualizuje sam). Dzisiaj go używam jak mam na szybko komuś postawić jakąś wizytówkę, prościutką stronę firmową itp. Takie projekty którym nie zależy na wydajności (SS za często uderza do bazy na czym cierpi jego wydajność i mocno go ogranicza).

Co do błędu "request.CRITICAL: Uncaught PHP Exception Twig_Error_Runtime: "The "native_profiler" extension is not enabled in "BloggerBlogBundle:Page:index.html.twig" at line 2" wydaje mi się że masz coś walniętego w konfiguracji. Ciężko mi powiedzieć co.
2.7 (aktualny) przechodzi testy https://travis-ci.org/symfony/symfony/branches no i mam projekt aktualny na tej linii więc to nie FW. Zresztą nie pamiętam żeby poszedł kiedyś release bez testów :P

Btw, wszelkie rozwiązania w postaci paczek w niczym nie pomagają. Composer używa phar bo to narzędzie nie powiązane z www. Jak masz coś w paczce to łatanie aplikacji bywa kłopotliwe. Może będziesz tym szczęśliwcem co wyłowi błąd w danym frameworku. Mi się zdarzało nie raz w różnych więc mam historię. Lepiej nie utrudniać dostępu do źródeł i modyfikacji ich. Czasem trzeba zrobić quick fix i poczekać na poprawkę oficjalną. Miałem tak parę razy.
Robert P.

Robert P. Senior PHP Developer

Temat: Jaki micro framework?

Czytam tą waszą dyskusję i dziwię się, że Symfony2 pojawiło się w kontekscie microframeworka, którym nie jest.

Jeśli potrzebujecie coś naprawdę prostego np. lekkie restowe API to Silex, Slim.

Co do Phalcona działa bardzo fajnie, minusem na pewno jest hosting, jeśli chcesz phalcona musisz doinstalować moduł PHP. Pod kątem wydajności z uwagi na to, że phalcon jest modułem PHP to requesty są o w wiele szybsze. Sam framework i system szablonów są napisane w C. Testowałem Phalcona 1. 2 jeszcze nie i mam pozytywne wrażenia.

Co do Silverstripe, to owszem jest bardzo szybki, ale nakład magii, która tam jest, wszechobecne singletony itp. sprawiają, że nie nadaje się do bardziej kompleksowych projektów, na pewno też nie klasyfikowałbym go jako microframework.

Co do composera to zwykle robi się forka projektu i pull requesta do orginalnego z naprawą błedu. Ewentualnie można liczyć na to, że jak się stworzy Issue na githubie to ktoś za nas poprawi błąd(za miesiąc :) ).

Podsumowując wg mnie w kontekscie microframeworka warto zwrócić uwagę na Silex-a, który jest oparty na komponentach Symfony2. MicroFrameworki nigdy nie będą tak obszerne jak Frameworki, ale o to właśnie chodzi. Jeśli potrzebujemy coś więcej korzystamy z framework i tutaj z czystym sumieniem polecam Symfony2 do którego również mamy gotowe CMS/CMF oraz setki innych bundle.

@Dariusz Rorat

zastępowanie w app_dev.php dev na prod sprawia że ten plik jest bez sensu równie dobrze możesz sobie odpalić app.php.

konto usunięte

Temat: Jaki micro framework?

No i skończyło się na Silex'ie. Na razie dopiero zaczynam, ale jestem już pod wrażeniem tego typu narzędzia. Mam w nim co chcę (composer pomaga skonfigurować fajnie projekt) i tak naprawdę wszystko prawie jak chcę. Poza tym jest "troszkę" szybsze od Symfony2 :P

konto usunięte

Temat: Jaki micro framework?

Jarosław O.:
No i skończyło się na Silex'ie. Na razie dopiero zaczynam, ale jestem już pod wrażeniem tego typu narzędzia. Mam w nim co chcę (composer pomaga skonfigurować fajnie projekt) i tak naprawdę wszystko prawie jak chcę. Poza tym jest "troszkę" szybsze od Symfony2 :P

Tylko dobrze przemyśl projekt. Już mój jeden kolega wpadł na pomysł żeby użyć silexa. Później użył twiga, następnie moduł konfiguracji, moduł uprawnień, routing i ani się obejrzał zaciągnął do siebie prawie całe symfony :-) Silex opłaca się tam gdzie masz naprawdę coś małego do zrobienia.

konto usunięte

Temat: Jaki micro framework?

Gdyby wyszło mi Symfony, też nie miałbym nic przeciwko (ale nie wyjdzie - używam trochę innego podejścia) :) Przynajmniej trochę się nauczę.



Wyślij zaproszenie do