HipHop for PHP

Transformator kodu PHP do C++

Krzysztof Hasiński
17 grudnia 2011

PHP

Łatwy do pisania, niewydajny przy uruchomieniu

Rozwiązania

Co jeszcze można zrobić?

HipHop for PHP

HipHop for PHP to transformator kodu PHP do C++
I docelowo do natywnego kodu x86-64

The Social Network

Transformacja

Funkcjonalność magiczna

Pozostałe braki

Inne wady

To gdzie te plusy?

* Drupal oraz Wordpress, mierzone w liczbie wyświetleń na minutę, porównanie przy PHP5 + APC

Tryby działania HipHop for PHP

  1. Compile & run - dobre do programów CLI
  2. Compile to tmp dir & run - dobre do testów kompilacji
  3. Compile to tmp dir & run as web server - Tryb do testów i produkcji
  4. Start an interpreter (HPHPi) - Tryb do pisania oprogramowania dla CLI
  5. Start an interpreter and a web server - Tryb do pisania oprogramowania

Jak zacząć pisać w HipHopie?

  1. Pisz w PHP
  2. Uruchamiaj w HPHPi (interpreter HipHop, pozwala na pracę modyfikując kod w locie)
  3. Stwórz listę plików do kompilacji (np. używając find)
  4. Skompiluj kod
  5. ????
  6. Profit!

Talk is cheap, show me the code

Kompilacja

~/hiphop-php/src/hphp/hphp\
 --keep-tempdir=1 \
 --log=3 \
 --input-list=files.list \ # Lista plików do kompilacji
 --include-path="." \
 --force=1 \ # Nie zatrzymuj się nad nieobsługiwanymi funkcjami
 --cluster-count=8 \ # Stwórz osiem plików do kompilacji

Wywołanie

/tmp/hphp_ASp2PJ/Moj_Skompilowany_Program -m server -p 8080 
 -v "Server.SourceRoot=`pwd`" \ # Ważne, gdyż skompilowany program 
 \                              # zawiera się w innym katalogu
 -v "Server.DefaultDocument=index.php" \
 -v "Log.Level=Verbose" \ 
 -c $HPHP_HOME/bin/mime.hdf & # Bez tego nie załadujemy w 
                              # serwerze plików CSS czy JS
		

Popularne WTF

WTF?!Oh, ok
Nie mogę uruchomić kompilatoraObecny kompilator działa tylko na Linuksie i BSD (bez OSX), na początek ściągnij VM
Błędy z file_exists()Ustaw root dir na ścieżkę z nieskompilowanym kodem
Po kompilacji kod chodzi wolniej i zajmuje więcej pamięciOptymalizuj pod HipHop (np. alokuj pamięc na tablice)
Czy naprawdę potrzebuję HipHop?Nie (ale to ciekawa zabawka)

Pytania?