Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] brak stosowanie framework'ów a wydajność dużych aplikacji
Forum PHP.pl > Inne > Hydepark
Adrian Staniszewski
Witam,

Tworzę obecnie projekt który będzie musiał sprostać dużemu ruchowi. Domyślnie niestety nie korzystam zzadnego z framewroków - brak czasu na naukę programowania w danej aplikacji..

Zastanawiam się czy nie będzie to miało istotnego wpływu na wydajność tworzonej aplikacji oraz czas generowania witryny.

Mam też problem z cache. Na stronie 95% danych będzie się dynamicznie zmieniać i nie wiem czy stosowanie cache ma sens ?
dr_bonzo
Jak sie wszystko zmienia to nic nie zcacheujessz.

Rozwaz jeszcze to czy bedziesz musial aplikacje rozwijac. Czy nie lepiej dokupic sprzetu - kilka serwerow?
Adrian Staniszewski
Owszem, aplikacje będzie rozwijana dalej.
Narazie jest na etapie testów.

Nigdy nie pisalem aplikacji ktora ma działac na kilku serwerach. Czy rozni się to od typowej aplikacji ? - czy trzeba jakos rozdzielac procesy na serwery itp..

Aplikacja wykorzystuje PHP5, MySql, JS, Ajax, Xhtml...
Moli
Przy dużym projekcie, musisz duży nacisk położyć na zoptymalizowanie kodu. Wszystko robic dokladnie i bez niepotrzebnych "rzeczy".
Cytat
Mam też problem z cache. Na stronie 95% danych będzie się dynamicznie zmieniać i nie wiem czy stosowanie cache ma sens ?

Jakoś te dane sie beda zmieniac, napewno nie masz możliwości uzycia cachu i kasowania go np. po jakies akcji użytkownika ?
SHiP
Po pierwsze nie wierzę, że nie da się niczego zcachować winksmiley.jpg Chociaż jesli czas istnienia danych jest zbyt krótki to nie zawsze się opłaca. najlpeiej zrobić testy prędkości...

Po drugie zawsze mozesz zwiększyc czas uzywając pewnych dopalaczy na serwerze. Jak nie chcesz prekompilować kodu(bo. np liczy się dla Ciebie ciągły dostep do kodu) to zawsze można zniwelować ilosc include i ogolnie operacji na plikach co znacznie przyspieszy stronę.

Po trzecie nieużywanie gotowego frameworka nie zawsze wiąze się z małą wydajnością smile.gif.
NuLL
Framework to wydajnosc blinksmiley.gif Sugerujesz ze dodatkowy kod np Symfony pomoze w wydajnosci ? laugh.gif Zalezy jaki duzy projekt - jak jest kasa to lepiej napisac dedykowany pseudoframework prymitywny tylko dla tego projektu aby wszystko dzialalo wlasnie szybcie - no chyba ze ktos nie jest w stanie napisac takowego winksmiley.jpg Ale to juz inna sprawa smile.gif
Adrian Staniszewski
głownie to brakuje czasu tongue.gif projekt ma dużo "pierdół" i ich napisanie zajmie mase czasu ;/ dziennie mam przygotowane 2-3 kartki a4 z tym co musze zrobić a wieczorem kończe z kolejnymi 5 katkami tongue.gif z tym co danego dnia już zrobiłem..

gdy będe już bogaty i będe tylko zajmował się podpisywaniem papierków to zlece pewnie komuś napisanie czegoś na miare winksmiley.jpg

a co do samego pytania o framewrok'i to chodziło mi o wydajność przy stosowaniu kodu przetestowanego pod tym względem przez setki programistów a tym napisanym samemu i wykorzystanym de facto raz jeden w tym projekcie
mike
Cytat(NuLL @ 27.03.2008, 20:53:44 ) *
Framework to wydajnosc blinksmiley.gif Sugerujesz ze dodatkowy kod np Symfony pomoze w wydajnosci ? laugh.gif Zalezy jaki duzy projekt - jak jest kasa to lepiej napisac dedykowany pseudoframework prymitywny tylko dla tego projektu aby wszystko dzialalo wlasnie szybcie - no chyba ze ktos nie jest w stanie napisac takowego winksmiley.jpg Ale to juz inna sprawa smile.gif
Pisanie swojego frameworka to głupota. Nie, nie głupota. Szczyt głupoty.

Najlepszym wyjściem jest wybrać sobie framework odpowiedni (lub najbliższy odpowiedniemu) do Twoich wymagań i go zastosować. Ewentualnie odchudzić lub stuningować.

~NuLL porównaj sobie: Ty poświęcasz dziesiątki godzin żeby napisać swoje rozwiązanie. Jak skończysz pisać swój dopasowany framework ja skończę pisać aplikację. Twoje jest szybsze? Nie. Ja dokupuję kość RAMu i mamy równie szybkie aplikacje. Przepraszam - ja mam. Ty zaczynasz dopiero pisać.
Kość ramu, czy jakikolwiek inny sprzęt zawsze będzie tańszy od kosztów pracy programisty. Dlatego efektywni programiści są lepsi od tych co zawsze klepię "swoje rozwiązania".
Oczywiście nie popadajmy w skrajność. Optymalizacja na pierwszym miejscu, ale z zaznaczeniem że piszemy szybko i wygodnie.
erix
Wiesz, framework - bądź co bądź - to zawsze dodatkowe maltretowanie interpretera...

Cytat
Nigdy nie pisalem aplikacji ktora ma działac na kilku serwerach. Czy rozni się to od typowej aplikacji ? - czy trzeba jakos rozdzielac procesy na serwery itp..

Aplikacja wykorzystuje PHP5, MySql, JS, Ajax, Xhtml...


Najprościej, jak się tylko da - rozdzielić część statyczną od dynamicznej na kilka serwerów - np. obrazy, CSS-y, statyczne dokumenty.
Możesz też SQL wrzucić na osobną maszynę...

Wcale nie trzeba bardzo kombinować, jeśli chcesz porozdzielać zadania. :]

Cytat
to chodziło mi o wydajność przy stosowaniu kodu przetestowanego pod tym względem przez setki programistów a tym napisanym samemu i wykorzystanym de facto raz jeden w tym projekcie

Zawsze rozwiązania oparte na własnych (wykorzystywanych na libach z PHP) będą wydajniejsze niż z gotowych frameworków, np. db - zwykle w fw ładujesz jakąś dodatkową konfigurację, itp.

A na upartego, to możesz pojechać na mysqli albo PDO. ;]

Inna sprawa, to realizacja zadań - coś, co może się wydawać prostą czynnością dla skryptu, może przechodzić przez dziesiątki routerów/filtrów...

Jeszcze jest partyzanckie wyjście - napisać najbardziej zasobożerne partie aplikacji w np. C++ i ładować je do skryptu przez rozszerzenia. Albo przerzucić się na zupełnie inny język zamiast PHP... Choć wcale nie neguję, że w PHP można zrobić żwawo działające aplikacje - kwestia zaprojektowania...

Cytat
Na stronie 95% danych będzie się dynamicznie zmieniać i nie wiem czy stosowanie cache ma sens ?

No, to zależy od czasu, ale jeśli masz możliwość cache'owania danych choćby na minutę - skorzystaj. Porób jakieś testy, jak poszczególne rozwiązania sprawdziłyby się do Twojego projektu - masz przecież pliki, shmop, apc...

edit: troszkę się zagalopowałem - nie uwzględniłem "czasu programisty"...
Adrian Staniszewski
po kilku dniach powolnego myślenia tongue.gif stwierdziłem iż faktycznie znajdę miejsce gdzie cache sprawdzi się super.. troszke to koliduje z moimi upodobaniami jednak w takim serwisie wydajność to podstawa

co do mysql to albo napisze jakiś cache albo znajde gotowy.. zgadzam się iż czas to pieniądz..

------------
edit.
zastanawiam się jeszcze czy stosowanie AJAX w takim projekcie będzie wydajne ?
na stronie głownej będe miał sporo zakładek jednak pobieranie dlań zawartości - gdy możliwe iż 90% użytkowników i tak się nimi nie zainteresuje -> czytaj nie otworzy - jest marnowaniem zasobów serwera.. myślę nad użyciem do obsługi tych zapytań właśnie AJAX... część z tych pobieranych danych będzie się znajdować w cache
Sh4dow
Cytat(mike @ 28.03.2008, 13:16:31 ) *
Pisanie swojego frameworka to głupota. Nie, nie głupota. Szczyt głupoty.

Najlepszym wyjściem jest wybrać sobie framework odpowiedni (lub najbliższy odpowiedniemu) do Twoich wymagań i go zastosować. Ewentualnie odchudzić lub stuningować.

~NuLL porównaj sobie: Ty poświęcasz dziesiątki godzin żeby napisać swoje rozwiązanie. Jak skończysz pisać swój dopasowany framework ja skończę pisać aplikację. Twoje jest szybsze? Nie. Ja dokupuję kość RAMu i mamy równie szybkie aplikacje. Przepraszam - ja mam. Ty zaczynasz dopiero pisać.
Kość ramu, czy jakikolwiek inny sprzęt zawsze będzie tańszy od kosztów pracy programisty. Dlatego efektywni programiści są lepsi od tych co zawsze klepię "swoje rozwiązania".
Oczywiście nie popadajmy w skrajność. Optymalizacja na pierwszym miejscu, ale z zaznaczeniem że piszemy szybko i wygodnie.


Nie żebym się czepiał ale kupienie kości pamięci to rzeczywiście nie problem. Trzeba było powiedzieć to panom z naszej-klasy. Takie przypadki po prostu się zdarzają. Sprzęt będzie za długi czas albo coś innego wyskoczy. A optymalizacja odsunie ten proces trochę w czasie. Dla osoby prywatnej robiącej stronę hobbistycznie to dokupienie kości pamięci albo serwera to są koszta. A w firmie programista ma płacone za to że to ma działać i póki się da będzie musiał optymalizować. Sprzęt to raczej ostatni krok i nie należny on tak bardzo do Programisty jak do Administratora biggrin.gif

Osobiście przy dużych projektach, a o takim chyba tu mówimy, wole własne rozwiązania, "szyte na miarę". Nie potrzeba zawsze 50 ekstra wypasionych modułów. I takiego podstawowego "prawie" frameworka nie pisze się miesiącami. Ja, składający się z jakiś może 10 klas, swój framework napisałem w 2 dni. A podczas pisanie już potrzebnych mi akcji czasami dopisałem metodę lub ją poprawiłem. Zresztą po paru projektach podstawowy frame jest szybki mały i daje wszystko co potrzeba. zawsze można się wspierać systemem szablonów ewentualną obsługą bazy danych. Czy coś więcej potrzeba ? Chyba nie.
Moli
Sh4dow dobrze mowi (piwa mu nalać haha.gif), pojecie framework to nie tylko bardzo rozbudowany silnik (ala symfony) ale moze tez byc same jądro systemu. Ja w swoich projektach, jądro tez wolałem swoje napisać, dzięki temu wiem co gdzie mam, czym co zmieniam i wszystko mam ułatwione. Co z tego że straciłem na początku kilka dni, jak teraz przy każdym projekcie zyskuje dużo więcej.
Adrian Staniszewski
dawno albo i nigdy jak teraz nie zastanawiałem się nad czasem generowania strony.. właściwie to nawet nie wiem jaki jest optymalny czas takiego generowania tongue.gif

obecnie testuje aplikacje na shared host i wiadomo.. serwer ma duże wachania i często są jakies przestoje itp.. ale zastanawiam się jaki jest optymalny czas generowania strony - po stronie serwera..

ma tutaj zapewne duże znaczenie rozmiar strony, ilośc i typ generowanych elementów.. może znacie jakieś testy lub też przykładowe dane na ten temat?
Jarod
Cytat(Moli @ 28.03.2008, 16:14:41 ) *
Sh4dow dobrze mowi (piwa mu nalać haha.gif), pojecie framework to nie tylko bardzo rozbudowany silnik (ala symfony) ale moze tez byc same jądro systemu. Ja w swoich projektach, jądro tez wolałem swoje napisać, dzięki temu wiem co gdzie mam, czym co zmieniam i wszystko mam ułatwione. Co z tego że straciłem na początku kilka dni, jak teraz przy każdym projekcie zyskuje dużo więcej.

Popieram, popieram. Ja dokładnie to samo. Co prawda pisałem to dłużej ale miałem świra na punkcie najlepszego algorytmu. Testowałem kilka różnych rozwiązań i wybierałem najlepsze. Teraz tylko stosuje swój framework/core w aplikacjach i najwyżej coś dopisuje.

Pozdrawiam
Adrian Staniszewski
może nikt nie zauwazyl ale nie pytalem o wyzszosc swoich frameworkow nad tymi gotowymi a do tego temat doszedl tongue.gif jesli to kogos interesuje to proponuje toczyc rozmowe w innym temacie...
erix
Ale czy to - summa summarum - tak bardzo niezwiązana z tematem dyskusja?

Przecież nie gadamy o wyższości Świąt Bożego Narodzenia nad Wielkanocnymi (albo vice versa tongue.gif).

Gotowe i testowane rozwiązania są pisane pod jak największą grupę odbiorców - żeby zadowolić ich jak najwięcej.

A pod konkretne zastosowanie, to już przecież co innego - czy jeśli chcesz kupić najlepiej dopasowany garnitur, to wybierzesz ze sklepu, czy powierzysz zadanie krawcowi? Fakt, czas będzie dłuższy, ale skrojony na miarę, a nie na manufakturę.
Moli
Jeśli będziesz robił tylko ten jeden projekt, zadnych innych nie, to możesz użyć gotowego fw, bo wtedy szkoda czasu na pisanie czegoś autorskiego. Musisz dobrać aplikacje która będzie pasować do Ciebie, na kórej będzie Ci się przyjemnie i szybko pisać, a za razem która będzie dobrze zoptymalizowana. Jeśli nie chcesz tracić czasu na pisanie wszystkiego, możesz zawsze skorzystać z gotowych klas (albo z Zend Fw) a jądro napisać po swojemu.
erix
Cytat
na kórej będzie Ci się przyjemnie i szybko pisać, a za razem która będzie dobrze zoptymalizowana

Niejednokrotnie jest to zależność odwrotnie proporcjonalna... ;/ (jeśli chodzi o gotowe skrypty)

Poza tym, pojęcie wygody bywa różne; co człowiek, to charakter. ;]
Moli
Cytat
Poza tym, pojęcie wygody bywa różne; co człowiek, to charakter. ;]

Dlatego dużo osób uważa że lepiej napisać raz swoje core i na nim pracować, niż używać czegoś co jest stworzone tak aby zadowolić jak największą grupe odbiorców.
erix
Też popieram tą filzofię. ;]

Ale już zupełnie nie rozumiem, gdy do wyświetlenia dosłownie kilku podstron, "developer" ładuje całego Cake'a/etc zamiast kilku ifów i require...
Adrian Staniszewski
proszę o moderatora o zamknięcie tematu ;/ dyskusja w nim się tocząca to jakiś jeden wielki oftopic i przepychanki słowne i jakoś nijak się to ma do tego o co pytałem ;/
Ociu
Wedle życzenia.
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.