W opublikowanym na deweloperskim blogu Facebooka wpisie, pracujący tam inżynier Haiping Zhao stwierdził, że szybki rozwój Facebooka przez ostatnie sześć lat był właśnie możliwy dzięki prostocie PHP – języka, którego „łatwo się naczyć, łatwo w nim pisać, łatwo go czytać i łatwo debugować”.
Trudne jest skalowanie aplikacji w PHP
Jednak zalety PHP gdzieś się kończą – język ten nie jest w stanie zaoferować takiej wydajności aplikacji, jak np. aplikacje pisane w Javie czy językach .NET. Efektem ubocznym stosowania przez Facebooka PHP była nieustannie rosnąca liczba serwerów webowych, generująca spory narzut na działanie serwisu. Coraz trudniej było skalować infrastrukturę, gdy liczba odsłon zaczęła przekraczać 400 mld miesięcznie.
Jednym z rozwiązań tego problemu było przepisywanie najbardziej złożonych części aplikacji w PHP w C++, jako PHP Extensions. PHP stawał się językiem pomostowym pomiędzy widokiem aplikacji a jej biznesową logiką. Efekty były dobre – ale drastycznie zmniejszały pulę inżynierów potrafiącygch pracować nad takim projektem. Musieli oni nie tylko radzić sobie z C++ ale też dobrze rozumieć interfejs programowania Zenda. Dla Facebooka, w którym pracuje raptem kilkuset programistów, był to spory problem.
Rozwiązaniem jest projekt HipHop for PHP. W praktyce nie jest to kompilator PHP, tak jak głosiła plotka, ale translator, który dokonuje konwersji kodu PHP do wysoce zoptymalizowanego C++. Uzyskany tak kod jest kompilowany za pomocą opensource'owego g++. Całość składa się z translatora, nowej implementacji bibliotek uruchomieniowych PHP i napisanych na nowo PHP Extensions, które wykorzystują teraz optymalizację wydajności.
HipHop pozwala inżynierom Facebooka na na pisanie logiki, która składa widok strony prezentowanej użytkownikowi w PHP z danych dostarczonych przez backendowe usługi, napisane w językach takich jak C++, Java, Python czy Erlang.
Ładowanie





Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7
steve
Browser: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10
Kompilator zawiera się w grupie translatorów po jest jej podtypem. Kompilator z definicji tłumaczy do innego języka.
szuki is back
Browser: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.302.2 Safari/532.8
Browser: Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7
Puki co to możemy się pośmiać z Ciebie i Twojej wiedzy na temat obu technologii (.NET i Java)
...HipHop for PHP, wydaje się być tylko kolejną (głośną) próbą ratowania aplikacji pisanych w PHP. Swoją drogą zauważyliście, że coraz więcej projektów wykorzystuje C/C++ jako naturalny język dla Web Aplikacji - coś co jeszcze kilka lat temu nie było do pomyślenie nawet u najbardziej zagorzałych fanów tego języka.
Okazuje się, że wcale hardware nie jest tańszy od godzin pracy programistów - w dłuższej perspektywie zyski mogą być ogromne, przykład: google ( połączenie pythona, c oraz javy).
Dla prostych projektów, można wykorzystać PHP, jednak w przypadku złożonych lub dalekosiężnych planów rozwojowych programu, warto zainwestować w C++.
Programowanie w PHP przypomina kredy mieszkaniowy na 120% wartości nieruchomości lub fastfood.
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.1 Safari/532.9
Browser: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7
PHP było początkowo językiem szablonów wykorzystywanym do uzupełniania w dane statycznych plików HTML. Potem powstawały szablony w PHP i kolejne warstwy abstrakcji do tych szablonów.
No a teraz znowu PHP wykorzysta się do tworzenia logiki wyświetlania, czyli właśnie zgodnie z pierwotnym przeznaczeniem. I to jest całkiem naturalne rozwiązanie. Szkoda tylko, że dochodzi się do niego tak okrężną drogą.
Browser: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.00
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
PHP czyli Personal Home Page z początku był zbiorem skryptów CGI napisanych w C, które miały dodać dynamiki stronom w HTML'u. Dopiero wersja 3 wprowadziła sporą zmianą w tym podejściu, wersja 4 to początki obiektowości, wersja 5 to dalszy krok w stronę języków wysokiego poziomu, wersja 6, jeśli kiedykolwiek powstanie, będzie dalszym brnięciem w stronę języków wysokiego rzędu.
Jednakże PHP powiela błędy architektury mikroprocesorów, a mianowicie kolejne wersje są kompatybilne z poprzednimi. Nawet teraz procesory obsługują tryb rzeczywisty i kod dla 8086. Podobnie rzecz ma się z PHP'em - niby nowe opcje ale wciąż kompatybilność wsteczna.
Niestety ta kompatybilność powoduje, że PHP nigdy nie będzie się nadawał do profesjonalnych zastosowań. No chyba, że PHP stanie się frameworkiem C/C++ a kod napisany w PHP'ie będzie tłumaczony na C/C++ i potem kompilowany ... zaraz czy właśnie tego nie zaproponował Facebook ?
Pozadrawiam :)
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
odnieść do jakości takiego narzędzia. Czy brano pod uwagę serwery z
włączonym buforowaniem kodu wynikowego PHP (APC, xcache,
ZendOptimizer)? W jakim trybie PHP był uruchomiany? Jak zmierzono spadek obciążenia? Który element serwera był "mniej" obciążony? Pamięć, procesor, łącze?
Jako ciekawostkę powiem, że parametry funkcji w PHP można mocno typować i jest to sprawdzane w trybie runtime. Przydatne przy tworzeniu obiektowego kodu, więc nie jest prawdą stwierdzenie, że PHP to język pozbawiony typizacji statycznej.
Browser: Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7
Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7
dAREuS
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8
Mam warknąć co jest lepsze?
Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7
dAREuS
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8
Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.17) Gecko/2010010605 Ubuntu/8.10 (intrepid) Firefox/3.0.17 GTB6
dAREuS
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Iron/4.0.275.2 Chrome/4.0.275.2 Safari/532.8
Inna sprawa: nieco mnie wygina, ile niechęci i wrogości budzi PHP wsród niektórych programistów. Ja rozumiem, że pisząc w Erlangu i Schemie jest się hiperelitarnym ludkiem, ale w biznesowej praktyce PHP jest lubiany i znany - m.in. ze względu na te zalety o których pan Haiping napisał. jest wielu ludzi, którzy w nim w miarę przyzwoicie piszą. Łatwo złożyć zespół programujący w PHP. No i hosting dla PHP jest wszechobecny.
Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100114 Firefox/3.6
Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7
>na temat obu technologii (.NET i Java).
Java dla technologii web to mnóstwo niepotrzebnego kodu i kompilacja. Strasznie to wpływa na czas rozwoju projektu.
>Okazuje się, że wcale hardware nie jest tańszy od godzin
>pracy programistów
DZIENNE zarobki miernego programisty po studiach, który praktycznie nic nie potrafi to więcej niż kosztuje średniej klasy serwer w OVH, MIESIĘCZNIE. To nie jest wyższa matematyka.
Rachunek jest prosty. Może FB się bardziej opłaca optymalizować bo to nie jest kwestia pracy przez miesiąc, żeby można było pociągnąć kilka tysięcu UU więcej na jednej maszynie tylko być może ograniczenia zapotrzebowania na moc, które spowoduje, że nie będzie trzeba dzierżawić kilkuset serwerów.
To, że koszt sprzętu to promil kosztów programistów ma się nijak do zasadności optymalizacji.
>Programowanie w PHP przypomina kredy mieszkaniowy
>na 120% wartości nieruchomości lub fastfood.
Może, jeśli wykonują je pseudo-programiści, którzy C by nawet nie tknęli. Programista Javy czy C to dużo wyższe umiejętności i to się przekłada na zarobki, taniej jest dokupić nawet kilkadziesiąt serwerów i dołożyć load balancer niż zatrudnić jednego człowieka od C czy Javy, który potrafi coś zrobić.
Dodatkowo (mówimy o US) - zarobki programisty w stanach (i to praktycznie miernego, PHP, z 3-4 letnim doświadczeniem) - to minumum 40-50k USD rocznie.
Dedyk w OVH, SL, hosteurope, etc... to jakieś 300-400 miesięcznie za sprzęt dobrej klasy. Skąd przekonanie że sprzęt jest droższy niż programiści?
+Pracujesz za 300 złotych miesięcznie i masz się za programistę?
+Tak ci się wydaje?
+Przeczytałeś na forum gimnazjum w ciechocinku?
Moim zdaniem takie same bzdury jak twierdzenie, że mysql to pseudobaza. Jak się czegoś nie umie używać i nie wie do czego to jest to się później wypisuje takie głupoty. Bo największy serwis społecznościowy świata stoi na PHP, ale ja nic z tego nie czaję więc winna technologia :)
Swoją drogą fakt PHP jest bardzo wolne, dlatego każdy kto ma trochę oleju w głowie przepisuje część systemu który ma słabą wydajność w C/C++/Java. A nie przepisuje wszystko od nowa. Bo można by kod który w PHP tworzy się tydzień w C++ i kilka miesięcy pisać. Słyszałeś o czymś takim jak TTM (time to market)?
>Dla prostych projektów, można wykorzystać PHP, jednak
>w przypadku złożonych lub dalekosiężnych planów
>rozwojowych programu, warto zainwestować w C++.
Świetna rada dla wszystkich którzy chcą być drugim facebookiem czy drugim google :) Dla pozostałych piszące małe i niepoważne witrynki (mniej niż kilka miliardów odsłon miesięcznie) - jest PHP :)
> Zakładam, że do końca roku w home.pl będzie można
> skorzystać z HipHop ... jeśli nie to się przenoszę do
> kogoś u kogo będzie można.
A co to za różnica czy można. Strona ma działać, home ani nikt normalny nie zaproponuje w najbliższym czasie czegoś takiego jak HipHop bo jakby się skrypty PHP zaczęły ludziom wywalać to upchnęliby paru użytkowników więcej na maszynie ale musieliby zatrudnić małe miasto w roli supportu i wdrożeniowców.
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
Świetna rada dla wszystkich którzy chcą być drugim facebookiem czy drugim google :) Dla pozostałych piszące małe i niepoważne witrynki (mniej niż kilka miliardów odsłon miesięcznie) - jest PHP :)
Nigdzie nie pisałem o tworzeniu małych witrynek, wyraźnie zaznaczyłem iż chodzi o tworzenie software użytkowego (a chyba takim można nazwć FB - nie jest to zwykła witryna www).
Dedyk w OVH, SL, hosteurope, etc...
Myślałem, że rozmawiamy poważnie.
Pozostałe wywody pozostawię bez komentarza.
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.1 Safari/532.9
>a chyba takim można nazwć FB - nie jest to zwykła witryna www
A niby dlaczego nie?
>Pozostałe wywody pozostawię bez komentarza
Ja bym chciał na przykład poznać usługodawcę, gdzie dzierżawa serwera kosztuje więcej niż zarabia web developer* ;)
* - taki prawdziwy web developer, po studiach i z minimum paroletnim doświadczeniem na przykład.
>Nigdzie nie pisałem o tworzeniu małych witrynek
Taa... napisałeś że to "kolejna głośna próba ratowania PHP", tak jakby istniał jakiś poważny problem i co najmniej co druga witryna w jakiś sposób cierpiała z powodu wydajności tego interpretera.
Z resztą ani nie wiem co to jest dla ciebie web aplikacja (skoro podciągasz pod to FB to może jeszcze NK a zaraz potem każde forum phpBB), ani nie słyszałem o "innych próbach", w dodatku "głośnych".
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
Myślałem, że rozmawiamy poważnie.
-----------
Wywód o powazności także warto pozostawic bez komentarza.
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.17 MEGAUPLOAD 2.0
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
Załóżmy, że dzięki optymalizacji zyskujemy 25% przyrost wydajność ale koszt to na przykład 24 osobomiesiące.
Macie jeden serwer i jest on za słaby na stronkę - kupujecie drugi ... w tym przypadku taniej jest dokupić sprzęt niż optymalizować. Macie 10 serwerów, taniej dokupić drugie 10 serwerów.
Macie 10 tys. serwerów, czy na pewno taniej jest kupić 2,5 tys. serwerów? Średni serwer to 10 tys. pln, 2,5 tys. serwerów to ... 25 mln pln ... załóżmy zarobek programisty na poziomie 25 tys. pln netto miesięcznie ... 25 tys. razy 24 ...
Dlatego w przypadku facebooka o wiele bardziej opłaca się optymalizować niż dokupywać sprzęt - nowy serwer to nowy koszt maszyny, większe koszty infrastruktury, większe koszta utrzymania przez administracje.
Więc proszę na przyszłość pamiętać o zjawisku skali.
A wracając do mojej poprzedniej wypowiedzi - chyba tam zapomniałem dopisać, że jestem programistą PHP (jak i .NET i Javy). Po prostu należy znać wiele narzędzi i wybierać odpowiednie. Strony robię w PHP, inne projekty w Javie lub .NET - zależnie co bardziej pasuje. Mimo, iż PHP ma według mnie od groma i jeszcze trochę wad to jednak lubię ten język i nie uważam by był gorszy od innych
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
Browser: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.3; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
Dlatego w przypadku facebooka o wiele bardziej opłaca się optymalizować niż dokupywać sprzęt - nowy serwer to nowy koszt maszyny, większe koszty infrastruktury, większe koszta utrzymania przez administracje.
Dokładnie i dlatego stwierdzenie, że koszty zatrudnienia programisty jednak nie są wyższe niż koszty sprzętu jest idiotyczne.
Jasne, że jak jest wybór - programista albo 50 serwerów to będzie taniej, ale dalej koszta dzierżawy czy nawet zakupu pojedynczej maszyny mają się nijak do zarobków programisty.
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
Browser: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.20
Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.2pre) Gecko/20100130 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre
Choc PHP ma wady ( jaki język ich nie ma ! ) ilość zalet zdecydowała o jego popularności.
W temacie optymalizacji to jest przecież od dawien dawna porządnie przygotowane API dla PHP Extensions ( pecl.php.net ) . Komuś nie pasuje wydajność to pisze sobie bibliotekę, moduł , protezę w C ,C++ , ba nawet w ASM :-)
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
Baza tylko od Oracle, bo mysql to prosty szajs. Z języków ASM od bidy C++, bo każdy inny lamerski a PHP to cud że w ogóle jeszcze działa bo wszyscy rozpaczliwie szukają rozwiązania jakiegoś wyimaginowanego problemu :)
Ci którzy już napisali swój portal aukcyjny w C++ na dniach staną się milionerami, bo lada chwila padnie PHP a zaraz za nim allegro i świstak. Apokalipsa :D
Pytanie tylko gdzie znaleźć klientów na te technologie i czy ktokolwiek bredzący te farmazony widział raz w życiu kawałek kodu C czy zapytanie Oracle. A może gadaliście choć raz z klientem?
"Panie kup pan u nas, napiszemy ci sklep w C++, no fakt że zajmie to 2 lata zamiast 2 miesięcy i będzie droższe o 100 000 PLN, ale jak to będzie śmigać!! I jaka to oszczędność. Zamiast VPS-a za 100 złotych miesięcznie będzie to można hostować na VPS-ie za 70 PLN / miesiąc. A rynek jak kocha to poczeka" :)
Ale OK róbcie sobie webdeveloperkę w C czy C++, podczas gdy konkurencja skończy projekt w mySQL/PHP 2 lata wcześniej wy dalej będziecie się bawić w szukanie wycieków pamięci, przepełnień buforów, new/delete, kompilację i pisanie funkcji łączenia stringów :P
A kluczową funkcjonalność też sobie w C napiszą, będą mieli to samo kilka lat wcześniej a działać to będzie tak samo szybko.
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5
Bo jak to bywa w translatorach: nie dba się o security, ale o funkcjonalność i szybkość.
A co to języków. Jak to mawiał doktor Bogdan: PHP jest przedszkolu, Java w podstawówce, C/C++ na studiach ... jeszcze dodawał że asembler to język naturalnie wpojony nam przez Boga.
Analogicznie jest z projektami:
pisane przez studenta są w PHP,
pisane przez korporacje są w Javie,
pisane przez fascynatów i małe firmy w C/C++/perl'u
pisane przez profesjonalistów = kombinacja wszystkich szybkich technologii C/C++/Python/Java.
Bo każdy język ma swoje miejsce i zastosowanie
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
Browser: Opera/9.80 (Windows NT 5.2; U; pl) Presto/2.2.15 Version/10.10