8. Процесс выполнения скрипта
Лексический анализ
Синтаксический анализ
Происходит анализ токенов для определения их
грамматической структуры
9. Процесс выполнения скрипта
Лексический анализ
Синтаксический анализ
Генерация байткода
На основе лексического и синтаксического анализа генерится
байт код
10. Процесс выполнения скрипта
Лексический анализ
Синтаксический анализ
Генерация байткода
Выполнение байткода
25. phc
Плюсы:
Совместимость с “обычным” PHP
Поддержка расширений
Хорошая документация
26. phc
Минусы:
Не полноценный binary executable
Зависит от Zend Engine
Сложность подключения для web-проектов
27. HipHop
Разработан в Facebook
OpenSource с февраля 2010
Транслирует код php в код C++
100% php-кода компилируется через HipHop
Заявлено снижение CPU на 50%
28. HipHop
Standalone binary executables
Multi-threaded Web server
Встроенный debuger (local и remote)
29. HipHop: hphp --help
--config=FILE
Опции из конфигурационного файла. Файл в формате HDF
--db-config=STRING
Читает конфигурацию из DB. Строка в формате :@:/.
-l, --log=INT
Устанавливает уровень логирован в stdout:
0: No logging
1: Only errors
2: The same as 1 plus warnings.
3: The same as 2 plus extra information.
4: All log messages.
--input-list=FILE
Устанавливает путь к файлу со списком PHP-скриптов, которые будут компилироваться.
30. HipHop: hphp
$ hphp hello.php --keep-tempdir=1 –log=3
running hphp...
creating temporary directory /tmp/hphp_AZ4F7V ...
parsing inputs...
parsing inputs took 0'00" (55 ms) (null)
pre-optimizing...
pre-optimizing took 0'00" (325 ms) (null)
inferring types...
inferring types took 0'00" (134 ms) (null)
post-optimizing...
post-optimizing took 0'00" (72 ms) (null)
creating CPP files...
creating CPP files took 0'00" (634 ms) (null)
compiling and linking CPP files...
compiling and linking CPP files took 2'19" (139099 ms) (null)
31. HipHop
$ ls -lh /tmp/hphp_AZ4F7V
total 29M
-rw-r--r-- 1 santiago santiago 24K 2010-10-24 23:49 CMakeCache.txt
drwxr-xr-x 6 santiago santiago 4.0K 2010-10-24 23:51 CMakeFiles
-rw-r--r-- 1 santiago santiago 1.6K 2010-10-24 23:49 cmake_install.cmake
-rw-r--r-- 1 santiago santiago 3.2K 2010-10-24 23:49 CMakeLists.txt
-rw-r--r-- 1 santiago santiago 23K 2010-10-24 23:49 Makefile
drwxr-xr-x 3 santiago santiago 4.0K 2010-10-24 23:49 php
-rwxr-xr-x 1 santiago santiago 28M 2010-10-24 23:51 program
-rw-r--r-- 1 santiago santiago 57 2010-10-24 23:49 sep_extensions.mk
drwxr-xr-x 2 santiago santiago 4.0K 2010-10-24 23:49 sys
33. HipHop: ./program --help
-m, --mode
run: (default) directly executes the program from command line.
debug: starts debugger.
server: starts an HTTP server from command line.
daemon: starts an HTTP server and runs it as a daemon.
replay: replays a previously recorded HTTP request file.
translate: translates a hex-encoded stacktrace.
-c, --config=FILE
-p, --port
--admin-port
--debug-host
--debug-port
34. HipHop: admin server
GET http://localhost:9999
/stop: stop the web server
/status.xml: show server status in XML
/status.json: show server status in JSON
/status.html: show server status in HTML
/prof-cpu-on: turn on CPU profiler
/prof-cpu-off: turn off CPU profiler
/stats-malloc: turn on/off malloc statistics
/leak-on: start leak detection
etc
40. HipHop
Плюсы:
Активно развивается + поддержка Facebook
Native code
Прирост производительности, снижение CPU
Гибкость в конфигурации, администрированию и debug
Много дополнительных возможностей
Неплохая документация
Production-ready
41. HipHop
Минусы:
Сложность сборки, ряд ограничений
32bit support experimental
Поддержка модулей ограничена
Нет поддежки PHP 5.3 (скоро)
42. HipHop
Не ускоряет ваши SQL-запросы
Не ускоряет загрузку картинок и статического контента
Не улучшает отладку
Это не silver bullet для PHP
43. HipHop
Снижение CPU → уменьшение кол-во серверов