Wojciech K.

Wojciech K. realizator pomysłów
własnych

Temat: Optymalizacja, przyśpieszanie skryptu.

Filip Górny:
(odpalasz na końcu). Weźmy za przykład zarejestrowanie się 1000 użytkownika. Skrypt nagle zwalnia itp

wtedy to na 100% jest problem z konstrukcją zapytań do bazy, lub konstrukcją samej bazy.
Jak sobie z tym radzi

nie wiem, jak to jest teraz, ale kilka lat temu po prostu grafika i zdjęcia leżały rozrzucone na serwerach w USA, a sam serwis i baza leżały na serwerze w Polsce (którym się przez rok fizycznie opiekowałem, tzn. ścierałem z niego kurz i robiłem "reset", jak przychodziła taka komenda z Elbląga/Warszawy ;) )

Temat: Optymalizacja, przyśpieszanie skryptu.

Łukasz S.:
Generalnie dobrze jest chyba stosować "dopychanko":

$text = "blablabla";
$text .= moja_extra_funkcja(2);
$text .= ($b = "yes")?"yes":"dono";

Wrecz przeciwnie.
Lepiej zrobic tak:

echo "blablabla", moja_extra_funkcja(2), ($b = "yes") ? "yes" : "dono";

Efekt identyczny a szybciej, bo nie kleisz stringow w locie.

A tak będzie jeszcze szybciej :)
echo 'blablabla', moja_extra_funkcja(2), ($b = 'yes') ? 'yes' : 'no';

Pozdrawiam.

[edit]
Ten zagubiony warunek...Paweł Wolański edytował(a) ten post dnia 08.03.09 o godzinie 22:36

konto usunięte

Temat: Optymalizacja, przyśpieszanie skryptu.

A tak bedzie jeszcze szybciej :)
echo 'blablabla', moja_extra_funkcja(2), ($b = 'yes') ? 'yes'

A przy okazji zgubiles jeden warunek...
Sławek Pawęska

Sławek Pawęska PHP programmer,
nokaut.pl

Temat: Optymalizacja, przyśpieszanie skryptu.

nie trafilem jakos wczesniej na ten watek ;-) troche mi sie skojarzyl z:

0,000000000002
//is faster than
0,0000000001

i optymalizacjach ktore w 98% serwisow w sieci daja zysk rzedu 2 sekund na rok ;-)
Piotr Bandyk:
Fotka to całkiem inna bajka. Myślę, że tam optymalizacja nie jest już na poziomie kodu, ale na poziomie sprzetu.

dbalosc o kod jest znacznie tansza - a rzeczywistosc mamy dosc oszczedna ;-) inna sprawa jest taka ze przy takiej skali cos co w innym przypadku byłoby detalem tu moze zaczac nabierac znaczenia :-)

// zauwazylem duzo tu linkow do art'ow/porownan z roku 2005/06 - z kazda kolejna wersja php mam do takich dinazaurow mniej zaufania ;-) nic nie przebije wlasnych testow (zwlaszcza ze czesto sprawdzamy wtedy wlasne rozwiazania jakiegos problemu)

/// a jesli chodzi o optymalizacje: o tym mozna mowic calymi godzinami (ale jestem skrzywiony troche pod katem: architektura + duzo userow i spore serwisy ;-) a bardzo duzo zalezy od skali serwisu ktory nalezy zoptymalizowac :-) podstawowa rzecz (i wiekszosc zamulek jakie mozemy spotkac dzis w sieci) to jak juz wspomniano bazy (a dosc latwo sobie z nimi poradzic ;-) mozna sie zainteresowac:
- (mem?)cache
- indexami
- mega kobylastymi zapytaniami (czasem to rece opadaja ;-)
- dzieleniem tabel
- master/slave
- poprawki cfg
- partitioning (bo to nie jest tak ze zaczynamy o tym myslec dopiero jak sie okaze ze potrzebny - wtedy przepiszemy pol serwisu na nowo ;-) jesli mamy o tym jako takie pojecie to od razu napiszemy serwis tak ze jak przyjdzie potrzeba - uzyjemy ;-)

potem nalezalo by pomyslec o staticach, potrafic rozroznic czego potrzebujemy do js'ow/css a czego do np fotek (wazne ;-),

potem okazuje sie ze apache (mimo ze tuningujemy cfg :>) to nie do wszystkiego taki fajny i trzeba znac nginx czy lightppd. jak juz sie naczytamy za wszystkie czasy to jeszcze varnish, squid itd ;-) a zabawa dopiero sie zaczyna ;-)
Adam W.

Adam W. senior php
developer, Symfony

Temat: Optymalizacja, przyśpieszanie skryptu.

Sławek Pawęska:
dopiero jak sie okaze ze potrzebny - wtedy przepiszemy pol serwisu na nowo ;-) jesli mamy o tym jako takie pojecie to od razu napiszemy serwis tak ze jak przyjdzie potrzeba - uzyjemy ;-)

dlatego dobrze jest korzystać z gotowych sprawdzonych rozwiązań. a właśnie, czy pisząc o optymalizacji w grupie php nie należałoby się zastanowić nad tymi coraz bardziej rozbudowanymi gotowymi rozwiązaniami? czyli ormowanie i inne takie cuda, które ułatwiają programowanie ale znacznie zwiększają zasobożerność?
np taki Symfony. mnie najbardziej interesuje właśnie kwestia optymalizacji tego frameworka niż wpisów typu czy pisać "blalala" czy 'blalala'
potem okazuje sie ze apache (mimo ze tuningujemy cfg :>) to nie do wszystkiego taki fajny i trzeba znac nginx czy lightppd. jak juz sie naczytamy za wszystkie czasy to jeszcze varnish, squid itd ;-) a zabawa dopiero sie zaczyna ;-)

programista php musi się na tym znać czy to raczej jest rola administratora serwerów?
Sławek Pawęska

Sławek Pawęska PHP programmer,
nokaut.pl

Temat: Optymalizacja, przyśpieszanie skryptu.

Adam W.:
programista php musi się na tym znać czy to raczej jest rola administratora serwerów?

nie musi ;-) ale jesli sie zna to nie uznajemy tego za jego wade ;-P

a juz bardziej serio - duza czesc ludzi, ktorych znam, klepiacych wieczorami swoje start-up'y (a tu tez chyba takich sporo) zwyczajnie nie stac jeszcze na porzadnego admina ;-) wtedy znajomosc kilku skrotow o ktore mozna guglac sporo pomaga ;-)
Adam W.

Adam W. senior php
developer, Symfony

Temat: Optymalizacja, przyśpieszanie skryptu.

Sławek Pawęska:
a juz bardziej serio - duza czesc ludzi, ktorych znam, klepiacych wieczorami swoje start-up'y (a tu tez chyba takich sporo) zwyczajnie nie stac jeszcze na porzadnego admina ;-) wtedy znajomosc kilku skrotow o ktore mozna guglac sporo pomaga ;-)

jak nie stać na admina to chyba nie stać na maszyny które udźwigną duży ruch.

konto usunięte

Temat: Optymalizacja, przyśpieszanie skryptu.

jak nie stać na admina to chyba nie stać na maszyny które udźwigną duży ruch.

Od tego jest "cloud computing". Taniej niz admin, taniej niz wlasny hardware. Do czasu.

konto usunięte

Temat: Optymalizacja, przyśpieszanie skryptu.

Wojciech Sznapka:
Piotr Likus:
To nie jest optymalizacja ale architektura. Odwieczny problem "co trzymać w bazie SQL" mają chyba tylko ludzie pracujący nad aplikacją z 20 użytkownikami.

Patrz CSS, JPG i ten mniej oczywisty XML.

zależy o jakiej bazie mowimy, bo jeśli to DB2, to xml faktycznie nie jest oczywisty :-)

No tak, ale znasz jakieś przybliżone dane co do liczby serwisów chodzących na DB2? Pytam z ciekawości bo i tak tego używam na codzień...
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Optymalizacja, przyśpieszanie skryptu.

Piotr Likus:
Wojciech Sznapka:
Piotr Likus:
To nie jest optymalizacja ale architektura. Odwieczny problem "co trzymać w bazie SQL" mają chyba tylko ludzie pracujący nad aplikacją z 20 użytkownikami.

Patrz CSS, JPG i ten mniej oczywisty XML.

zależy o jakiej bazie mowimy, bo jeśli to DB2, to xml faktycznie nie jest oczywisty :-)

No tak, ale znasz jakieś przybliżone dane co do liczby serwisów chodzących na DB2? Pytam z ciekawości bo i tak tego używam na codzień...

Niestety nie. Ale dzisiaj na laborce z DB2 kolega pokazał mi recursive SQL i bardzo ładnie to wyszło :-)

A jak tobie się pracuje z DB2 w połączeniu z php'em?

Odnośnie optymalizacji jeszcze, artykuł Fabiena Potenciera, głównego kodera Symfony: http://fabien.potencier.org/article/8/print-vs-echo-wh...

konto usunięte

Temat: Optymalizacja, przyśpieszanie skryptu.

Wojciech Sznapka:
A jak tobie się pracuje z DB2 w połączeniu z php'em?

Na codzień to (nie)stety COBOL. Ale w PHPie robiłem przymiarki do czegoś "prawie jak" phpMyAdmin i nie napotykałem jakichś większych problemów. Duża zaleta to ta, że można to (DB2 Express C) odpalić na zwykłym pececie bez zbytnich ceregieli. Jest nawet vmx dla leniwców...Piotr Likus edytował(a) ten post dnia 10.03.09 o godzinie 23:46
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: Optymalizacja, przyśpieszanie skryptu.

Adam, co wedlug ciebie jest zasobozernego w symfony? Symfony jest bardzo rozbudowanym frameworkiem, to prawda, ale prawde mowiac odpowiednie dostosowanie infrastruktury serwerowej w zaleznosci od przewidzianego obciazenie zdecydowanie zniweluje ten efekt. Wykozystanie systemu cache'owania+dobra znajomosc propela/doctrine i uzywanie jego konstrukcji z glowa+memcache(o ile przewidujemy naprawde duze obciazenia) powinno zalatwic sprawe:)
Adam W.

Adam W. senior php
developer, Symfony

Temat: Optymalizacja, przyśpieszanie skryptu.

Roman Piekarski:
Adam, co wedlug ciebie jest zasobozernego w symfony? Symfony jest bardzo rozbudowanym frameworkiem, to prawda, ale prawde mowiac odpowiednie dostosowanie infrastruktury serwerowej w zaleznosci od przewidzianego obciazenie zdecydowanie zniweluje ten efekt. Wykozystanie systemu cache'owania+dobra znajomosc propela/doctrine i uzywanie jego konstrukcji z glowa+memcache(o ile przewidujemy naprawde duze obciazenia) powinno zalatwic sprawe:)

sam sobie odpowiedziałeś na to pytanie:)
ja porównuje do frameworka Kohana. aplikacja wykonuje się 10 razy szybciej (albo i więcej).
ale teraz chętniej wykonuję kolejne aplikacje korzystając z Symfony niż Kohana - przyjemniej się tego używa. jakby zastosować jakiegoś ORM w Kohanie obciążenie zwiększyło by się.

właściwie to nie wiem co w Symfony jest zasobożernego. Propel nie aż tak bardzo - bo goła aplikacja, dopiero co ściągnięta, nie korzystająca z DB działa bardzo powoli. ten typ tak po prostu ma:)
no bo dlaczego Symfony w testach ab.exe ma 13 zapytań/sec a Kohana ma ich 100 ?
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: Optymalizacja, przyśpieszanie skryptu.

Widzisz, to zalezy od tego jak bardzo Kohana jest rozbudowany. Zobacz jak wiele jest w symfony rzeczy, które są opakowane obiektami i jak dzieki temu wzrasta szybkosc tworzenia produktu finalnego. Jeżeli tworzysz produkt, który bedzie chodzil na malo wydajnych maszynach to jasne, szukamy czegos mniej zasobozernego, a najlepiej czysta struktura. Z drugiej strony liczy sie skalowalnosc dzieki ktorej w latwy, przezroczysty sposob mozesz wdrazac kolejne moduly, wdrozyc lokalizacje czy internacjonalozacje gdzie sam silnik frameworka jest transparentny i niemusisz przegrzebywac katalogow zastanawiajac sie "co autor mial na mysli". Nie powinnismy sie skupiac na tym na ile framework jest zasobozerny, ale na tym co klient dzieki niemu zyska i dlaczego warto w tym momencie zainwestowac w odpowiednie maszyny zwlaszcza przy projektach z ktorymi klient wiarze duze nadzieje sukcesu finansowego.
Kacper S.

Kacper S. Kacper Szurek

Temat: Optymalizacja, przyśpieszanie skryptu.

A co sądzicie o pre kompilacji przy pomocy Zend Encoder-a?

Podobno przyspiesza. Testował to ktoś?

konto usunięte

Temat: Optymalizacja, przyśpieszanie skryptu.

Roman Piekarski:
Nie powinnismy sie skupiac na tym na ile framework jest zasobozerny, ale na tym co klient dzieki niemu zyska i dlaczego warto w tym momencie zainwestowac w odpowiednie maszyny zwlaszcza przy projektach z ktorymi klient wiarze duze nadzieje sukcesu finansowego.

Zgadza się. Przy wydajności 13 zapytań/s podejrzewałbym że serwer pracuje na jakimś ośmiobitowcu lub czymś w rodzaju PicoWeb, w związku z czym inwestycja w serwer na pewno dużo wniesie...
Wojciech K.

Wojciech K. realizator pomysłów
własnych

Temat: Optymalizacja, przyśpieszanie skryptu.

Filip Górny:
no ps. Ile przeciętnie wykonują się Wasze stronki mierząc np.microtime() na początku i na końcu, oraz jak długo

Jest jedna bardzo prosta metoda, którą stosowałem od początku swoich zabaw programistycznych - zarówno w środowisku "domowym", jak i wówczas, gdy pracowałem u kogoś. Naście lat temu tak testowałem programy w asm/c - a potem to samo zacząłem stosować przy pracy z php/mysql -> wszystko, co piszę, testuję na maszynie chodzącej na P II 400 MHz ze 128 MB RAM (dawniej był to Pentium 90) - gdy dam jakąś zamulającą pętlę, albo zapytanie, widzę to od razu i od razu mogę to poprawić.
Przy pracy na powolnym sprzęcie, optymalizację kodu przeprowadza się niemalże odruchowo, a gdy odpala się to potem na docelowej, szybszej maszynie, chodzi pięknie i nie przynosi wstydu przy większym ruchu ;)
Filip Witczak

Filip Witczak właściciel, adnet

Temat: Optymalizacja, przyśpieszanie skryptu.

Z moich doświadczeń wynika, że przy dużej liczbie userów dużej liczbie zapytań lepiej działa baza. W sumie na logikę - bazy danych zostały właśnie po to stworzone by trzymać dane - i zostały pod tym kątem zoptymalizowane. Oczywiście można się sprzeczać, że jeżeli dane nie muszą być sortowalne etc to można to trzymać w plikach - ale tu prędkość i tak uzależniona jest od jakości sprzętu/wybranego rodzaju partycji/etc.
Admin mojego serwera na domiar tego twierdzi, że na plikach szybciej zajedzie się dyski niż na bazie - ale to nie moja opinia i się pod nią nie podpisuję (w końcu baza też trzyma w plikach dane).
Łukasz S.

Łukasz S. Programista
Aplikacji
Internetowych

Temat: Optymalizacja, przyśpieszanie skryptu.

Tak naprawdę to głównie zostaje dla tych co nie mają starego sprzętu Xdebug i sprawdzanie czasów wykonywania poszczególnych elementów i funkcji. Używając go w swojej pracy inżynierskiej dotyczącej generowania planu lekcji z użyciem algorytmu genetycznego byłem w stanie znaleźć 2 newralgiczne punkty dla algorytmu - pochłanianie pamięci przez jedną z tabel i zamulanie jednej z funkcji.

Wiadomo, że czegoś takiego nie jesteśmy w stanie odkryć przy małej ilości danych zdarza się jednak, że czasami jest to równie trudne przy jej dużej ilości - nie wiadomo w którym miejscu ich przetwarzanie ogromnie ogranicza prędkość algorytmu lub ogranicza czas ich pobierania.

Łukasz Schab
http://schab.czest.pl/
Stanisław P.

Stanisław P. Software designer

Temat: Optymalizacja, przyśpieszanie skryptu.

Filip Witczak:
Admin mojego serwera na domiar tego twierdzi, że na plikach szybciej zajedzie się dyski niż na bazie - ale to nie moja opinia i się pod nią nie podpisuję (w końcu baza też trzyma w plikach dane).
Prawda - bo z plików musisz czytać dane tak czy tak. Jeśli dorzucisz tam cachowanie, to zrobiłeś tak naprawdę własną bazę danych ;)
A w porządnej bazie jak masz 8GB pamięci, to ustawiasz 6GB cache'a danych, trochę na indeksy i prawie nigdy nie dotykasz dysku.

Następna dyskusja:

Optymalizacja skryptu - pom...




Wyślij zaproszenie do