php a duże projekty., Jakie środowisko używać. |
Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
php a duże projekty., Jakie środowisko używać. |
27.08.2006, 22:03:12
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
Witam.
Od jakiegoś czasu jako firma realizujemy w miarę duże projekty bazując częściowo na własnych rozwiązaniach (jak to już w świecie php bywa - każdy pisze własny framework). Interesuje mnie wasza opinia czy warto dalej brnąć w tworzenie własnych fundamentów, czy np. nie lepiej pozostawić to innym (Zend Framework, Symfony, itd). Jak wiemy w php zanim się "przetnie deskę", należy sobie stworzyć piłę, samą deskę, a najlepiej to okulary ochronne i wiele innych narzędzi. (szkoda że nie wygląda to tak jak w .net). I teraz najważniejsze to jakie wy narzędzia byście zastosowali przy tworzeniu większych serwisów internetowych (dla przykładu serwis - 50k userów na dzień dobry przeniesionych ze starej wersji - docelowo liczba może sięgnąć kilkuset tysięcy, a może i więcej). Chodzi mi o solidną platformę - czy ktoś z was pracował na jakimś dobrym ogólnodostępnym frameworku, nad podobnej wielkości projektem i może zdradzić mi jak się zachowywał? A może inne narzędzia? Czego wy używacie przy naprawdę dużych projektach? Ps. Zależy mi również na szybkości pracy - przy np. 4 programistach nad takim projektem koszta mają dla mnie duże znaczenie. Pozdrawiam dzięki za sugestie. anas |
|
|
27.08.2006, 22:55:35
Post
#2
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 0 Dołączył: 14.07.2006 Ostrzeżenie: (10%) |
Jeżeli chodzi o naprawdę duże projekty to ja wogóle stawiam na inny język niż php mianowicie Ruby. Korzystam przy tym (co będzie odpowiedzią na Twoje pytanie) z framewroka Ruby on Rails (dobry framework to na prawdę niezastąpiona sprawa. Radzę Ci po prostu wrzucić na warsztat to co wymieniłeś i samemu określić co spełnia Twoje oczekiwania)
|
|
|
28.08.2006, 07:10:29
Post
#3
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) |
Jeśli idzie o szybkość działania. Ruby w połączeniu z Railsami jest bardzo wolne. Z grupy RoR, Symfony, Django najszybsze jest Django, najwolniejsze Symfony..
Co do Cake php - http://www.litfuel.net/plush/?postid=138. -------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
28.08.2006, 12:27:26
Post
#4
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 0 Dołączył: 14.07.2006 Ostrzeżenie: (10%) |
Jeśli idzie o szybkość działania. Ruby w połączeniu z Railsami jest bardzo wolne. tak... ? a z czym to porównujesz? może jakieś testy? tracąc nawet trochę na szybkości działania zyskujesz na niesamowitej szybkości tworzenia. ps. pisząc o szybkości, nie mieszałbym frameworków dla różnych języków.. |
|
|
28.08.2006, 14:32:42
Post
#5
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
Hej.
Ogólnie rzecz biorąc trudno by mi było teraz przekonać wszystkich programistów do tworzenia w Ruby - chodziło mi głównie o frameworki dla php. Co do Symfony - czy ktoś z was postawił na nim duży serwis, z dużą ilośćią odsłon - chodzi mi o porównanie jak się poszczególne fw zachowują w stosunku do obciążenia, jak działa w nich cachowanie, jak szybko się w nich pisze, testuje, etc. Między tym co jest napisane w dokumentacji, a rzeczywistością są zawsze duże rozbierzności - dlatego ciekawią mnie wasze doświadczenia. Czy np. warto postawić na szybkie tworzenie (stosowanie narzędzi typu ORM) i późniejszcze cachowanie wyników, czy też lepiej skupić się na dobrym oprogramowaniu warstwy DAO i zapomnieć o takim rozwiązaniu? Ja mam swoją opinię na ten temat, ale nie chciałbym wprowadzać jakichkolwiek sugestii, tylko usłyszeć waszą w miarę obiektywną ocenę. Pozdrawia i dzięki za pomoc. anas |
|
|
28.08.2006, 14:46:13
Post
#6
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) |
nazihipi: chodzi pewnie o ten test http://wiki.rubyonrails.com/rails/pages/Fr...ork+Performance
-------------------- |
|
|
28.08.2006, 18:48:38
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) |
Wg mnie aktualnie jeśli ktoś ma już coś swojego i to się dobrze sprawuje to nie widze powodów by się przesiadać na inne rozwiązania. Zwłaszcza, że nie powalają.. a wręcz przeciwnie ma się zawsze jakieś swoje zastrzeżenia do nich.
Wiele osób zachwala Cake php, ale jak już pisałem nie raz dla mnie ten framework od strony kodu jest nie do zaakceptowania. Symfony.. przeglądałem jego możliwości, wszystko ładnie wygląda jak się robi schematyczne rzeczy.. ale u mnie w pracy zawsze są jakieś odchyły i żadko kiedy wygląda to tak prosto jak na przedstawionych tam przykładach. Stawiam na swoje rozwiązanie z uwagi na to, że wiem jak chce tworzyć aplikacje, jeśli zauważe jakiś problem/złe podejście to sam je rozwiązuje, nie musze czekać na poprawki. Ważne tylko by podglądać `konkurencje` i unowocześniać swój framework od czasu do czasu. -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
28.08.2006, 22:39:12
Post
#8
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
anas: framework to nie wszystko. Mozesz rowniesz podkrecic baze danych/serwer. Zamiast np Apache moze zainteresuj sie lighttpd, ktory ponoc jest szybszy od apache (nie wiem nie testowalem, widzialem tylko benchmarki na stronie lighttpd), ktory w sobie uwzglednia mozlwiosc loadbalancing. Dodatkowo rozdzielenie uslug baza na innej maszynie, duzo ramu, + programowanie na poziomie bazy danych - postgresql, chyba ze mowimy o platnych rozwiazaniach, to oracle/mssql.
Mysle ze warto zwrocic uwage na optymalizacje kodu. Np generowanie statysytk moze byc czasochlonne... dlatego takie zadanie moze byc wykonywane raz dziennie, o 3-4 w nocy gdy obciazenie serwera jest praiwe zerowe... Cos za cos, raz na dzien aktualizowane statystyki, ale ... nie obciaza to maszyny. Takich praktyk jest wiele. Ale dobry projetk systemu + dobry projekt bazy + dobre wykonanie + konfiguracja maszyny = sukces. Cachowanie calych fragmentow strony moze okazac sie owocne, po co za kazdym razem wyciagac to samo menu z bazy, jak mozna raz zchacowac i miec w postaci pliku html gdzies zapisane? |
|
|
28.08.2006, 23:50:52
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
|
|
|
29.08.2006, 01:38:28
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) |
@mike_mech podejrzewam ze wersja MySQL 7.0 (hehe)
@J4r0d zwracaj uwage na nazwy bo mylisz pojecia Jesli chcesz wydajność polepszyc zainteresuj sie DB z plsqlem, bedziesz mogl wiekszosc funkcjonalnosci kodu przeniesc na baze danych. Podejscie ze jeden uzytkownik systemu = jeden uzytkownik bazy danych jest najlepszym rozwiazaniem. Uprawnienie dostep do rekordow zostawiasz bazie danych. Wyciagajac dane automatycznie sa filtrowane dla konkretnego usera. Przy wiekszych, zlozonych bazodanowych aplikachacg jak uczy literatura powinno się wiekszosc logiki zostawic bazie danych. -------------------- |
|
|
29.08.2006, 08:44:12
Post
#11
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
Mysle ze duzy projekt - chociazby gdzie jest strasznie duzo danych w bazie, liczony w milionach rekordow. Po prostu niektore usprawnienia baz typu oracle/pg/mssql usprawnia analize takich danych, co przyczyni sie do wzrostu szybkosci dzialania aplikacji.
Zwroccie uwage, ze zle oprogramowane zagadnienie pracujace na kilku tysiacach rekordow moze byc wolniejsze niz, takie samo zagadnienie lepiej oprogramowane liczone w milionach rekordow. Wiekszosc pracy ma jednak programista, nie FrameWork, czy Baza danych i to od niego wychodzi ta wydajnosc. |
|
|
29.08.2006, 09:20:09
Post
#12
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) |
Podejscie ze jeden uzytkownik systemu = jeden uzytkownik bazy danych jest najlepszym rozwiazaniem. Uprawnienie dostep do rekordow zostawiasz bazie danych. no nie wiem, ciezko mi sobie wyobrazic zakładanie dziesiątek tysięcy kont w bazie dla jednej tylko aplikacji i zarządzenie uprawnieniami dla takiej kupy. bardziej juz chyba, rola/grupa w systmie = jeden uzytkownik bazy danych. Ten post edytował sopel 29.08.2006, 09:21:05 -------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
29.08.2006, 14:53:58
Post
#13
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
Hej.
Wracając do topicu: głównie chodzi o pogodzenie czasu (wydajności pracy) w stosunku do jakości tworzonych rozwiązań. @sf: jasne że własne rozwiązania są bardziej elastyczne - co nie znaczy że jak poznasz dogłębnie jakiś framework to nie możesz nim manipulować. @SongoQ: zgadzam sie w 100% - lecz rozwiazania ktore proponujesz sa czasochlonne, aczkolwiek bardzo wydajne - stosujac w aplikacji warstwe DAO, zawsze mozna w miare potrzeb przepisywac pewne elementy systemu. @mike_mech, @SongoQ: odnośnie MySQL 5.0 - my aktualnie korzystamy z mysql 5.1.x - wersji beta - wprowadzono wiele zmian, wydajnosc jest akceptowalna, a funkcjonalnosc dla rozwiazan www jak najbardziej wystarczajaca. Oczywiscie nie zamierzam tutaj porownywac rozwiazan MS, Oracle, czy nawet PostgreSQL - bo wiadomo co zapewniaja tamte systemy - ale uwazam ze MySQL zmierza w dobrym kierunku i przyjemnie stosuje sie go nawet w duzych projektach dla www. Idac dalej - pogodzenie wydajnosci / jakosci = akceptacja klienta. Teraz stosujac rozwiazania ORM, gotowy framework, ktory zapewnia mi wiekszosc standardowej funkcjonalnosci, oprogramowujac sama logike zyskuje na czasie - pytanie jak to wazyc - czy lepiej np. zrezygnowac z narzedzi ORM - oprogramowywac warstwe danych stosujac wyspecjalizowane obiekty DAO i poswiecajac na to wiecej czasu. Jak to wynika z waszego doswiadczenia - gdzie jest ten zloty srodek - bo my zastosowalismy rozwiazania ORM, przy odpowiednim cachowaniu, sprzecie, acceleratorze i all jest ok - w przyszlosci w przypadku zwiekszajacego sie obciazenia, czy nie uwazacie ze taniej jest inwestowac w sprzet niz godziny programistow? Pozdrawiam anas |
|
|
29.08.2006, 18:58:01
Post
#14
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) |
Cytat czy nie uwazacie ze taniej jest inwestowac w sprzet niz godziny programistow? Ja uwazam, ze nie koniecznie, bo piszac aplikacje, to optymalizacja, podobnie jak bezpieczenstwo, nie jest doczepiana na koniec, tylko aplikacja jest pisana w optymalny i bezpieczny sposob od pierwszej linji, tak wiec majac dobrzych programistow powinnines dostac najoptymlaniejszy (prawie) kod. Ja osobiscie radze kompilowania php (Zend Encoder, eAccelerator, etc..) do postaci opcodow zenda, co oszczedza, bardzo duzo czasu. a co do sprzetu, to dobrze jest miec mocny, server, ale prawie 70-90 % wydajnosci skryptu (wykluczajac polaczenia i zadania DB) jest zalezna od jakosci napisanego kodu. Pozdrawiam |
|
|
30.08.2006, 11:42:11
Post
#15
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
@Nasty - tak o to się nie martwie - chodzi mi o gotowe narzędzia jak orm - ich wydajność nie jest znakomita, a tym samym jakoś wytwarzanego oprogramowania. Co do optymalizacji w tej chiwli używam APC i rzeczywiście zwiększa to znacznie wydajność. Lokalnie używamy do developerki ZendPlatform i dzięki php Inteligence i profilowaniu udaje się wyszukać wąskie gardła, ale przy np. przetwarzaniu w jednej chwili 50 000 rekordów przez wiele konkurncyjnych połączeń może powodować nie lada problemy - jak sobie z tym radziliście?
Pozdrawiam anas |
|
|
31.08.2006, 09:28:10
Post
#16
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
@J4r0d: przeczytaj jeszcze raz post anas,
Cytat Lokalnie używamy do developerki ZendPlatform i dzięki php Inteligence i profilowaniu udaje się wyszukać wąskie gardła @anas: a powiedz mi czy za kazdym polaczeniem musisz te 50k rekordow przetwazac? czy nie mozesz przypadkiem robic tego okresowo, raz na dzien/godzine/minute. przy wielu polaczeniach w ciagu minuty, generujac takie dane raz na minute i tak zyskujesz czas. Jesli chodzi o wydajnosc mysql 5.1, na ktorym to robisz, to nie wiem, nei testowalem. Ja staram sie odejsc od mysql na rzecz postgresql. |
|
|
31.08.2006, 11:14:35
Post
#17
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 3 Dołączył: 29.07.2005 Skąd: Szczebrzeszyn Ostrzeżenie: (0%) |
zgadzając się z większością zdań dodam od siebie, że dla naprawdę dużych projektów, gdzie online siedzi powiedzmy 5-10 tysiecy ludzików, żaden czołowy framework nie będzie się niestety nadawał. frameworki mają jak najbardziej uprzyjemniac i przyspieszac pracę, przykładowo pisząc dośc prosty cms w symfony sam napisałem ok 800 linni kodu, gdzie pisząc normalnie musiałbym napisać (korzystając z gotowych bibliotek do obsługi bazy, tempalteów itp.) przynajmniej ok 4-5 tysięcy. cena za to - czas generowania na poziomie 0,2 sekundy, co nie jest wartością porywającą (oczywiście dużo też zależy od konfiguracji sprzętowej)... spotkałem się nawet z poglądami że czasem nie warto stosować się do zasad programowania obiektowego - kolejny zysk na wydajności... myślę że przy ogromnych projektach złotym środkiem jest prosty kontroler, szybki system templatów i biblioteka do obsługi bazy (jednak raczej nie rozwiązanie typu orm) + jak największe uproszczenia wszystkiego. przyjemnie i w miarę szybko będzie się programowało, a kod będzie wydajny...
|
|
|
1.09.2006, 22:46:49
Post
#18
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
J4rod - co do testowania i wąskich gardeł ja profilu skrypty za pomocą Zend Platform - dzięki temu rozwiązaniu zyskaliśmy na wydajności nawet do 1000%. Czas wykonywaniu skryptu przy przeszukiwaniu takiej ilośći danych z zastosowaniem narzędzi ORM to nawet do 3-4s - co nie jest akceptowalne - stwierdziliśmy że warto będzie budować indeks.
Cały system to bardzo duża aukcja internetowa - w tej chwili dzięki cachowaniu wydajność jest akceptowalna, ale nie jest górnych lotów. Rzeczywiście jak napisał pawel_k zdecydowanie szybciej pracują duże serwisy napisane proceduralnie - tworzyłem osobiście www.gorzow.com jak uczyłem się php pod koniec lat 90-tych - obecnie muszę stwierdzić że ta aplikacja pracuje wydajniej niż obecne napisane obiektowo przy użyciu frameworka. Z moich odczuć wynika że przy bardzo dużych projektach znaczący wpływ na wydajność ma tak naprawdę cachowanie - jeśli znacie jakiś mechanizm cache którym łątwo zarządzać i który daje duże możliwości to będę wdzięczny za podpowiedź - obecnie stosujemy po stronie serwera eAccelerator'a, a po stronie aplikacji własne rozwiązania. pozdrawiam anas |
|
|
2.09.2006, 12:24:03
Post
#19
|
|
Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin |
a co do znaczy duzy projekt ?
duzo kodu, duzo danych ? duzo userow online ? czy moze ilosc $$ na umowie ... w php naprawde mozna wiele napisac ... nie koniecznie stron www. zas wybor narzedzi wspomagajacych pisanie projektu zalezy rowniez od wymagan zlecajacego ... przeciez nie bedziemy brali kobyly na ksiege gosci ktora bedzie miala 100 mln rekordow i obciazenie 200 usero online ciezko tu poradzic cos jednoznacznie .... -------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
2.09.2006, 16:24:08
Post
#20
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
@itsmeMowiac o duzych projektach, mialem na mysli projekty w ktorych jest w miare zlozona funkcjonalnosc - np. serwis aukcyjny, duzy sklep internetowy - i takie ktore maja przy okazji duzy lub bardzo duzy ruch.
@J4rod - nikt tego nie powiedzial - tak poprostu jest - jednak programowanie obiektowe pozwala latwiej organizowac prace, sam projekt, kod, kod staje bardziej elastyczny i co wazne mozna pewne jego fragmenty uzywac w innych projektach bez potrzeby refaktoringu. Pozdrawiam anas |
|
|
Wersja Lo-Fi | Aktualny czas: 11.11.2024 - 06:00 |