Recommended
PPTX
PPTX
PDF
PPTX
PHP と SAPI と ZendEngine3 と
PPTX
PPTX
PDF
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PDF
PECL operator で演算子オーバーロード
PDF
PPTX
PDF
PPTX
signal の話 或いは Zend Signals とは何か
PDF
PDF
PPT
How to debug a perl script using gdb
PDF
PDF
PDF
PDF
Symfony2でより良いソフトウェアを作るために
PPTX
PDF
PHPカンファレンス2014の懇親会飛び込みLT資料
PDF
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
PDF
PDF
PDF
PPT
PDF
PDF
Internal php and gdb php core
More Related Content
PPTX
PPTX
PDF
PPTX
PHP と SAPI と ZendEngine3 と
PPTX
PPTX
PDF
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
What's hot
PDF
PECL operator で演算子オーバーロード
PDF
PPTX
PDF
PPTX
signal の話 或いは Zend Signals とは何か
PDF
PDF
PPT
How to debug a perl script using gdb
PDF
PDF
PDF
PDF
Symfony2でより良いソフトウェアを作るために
PPTX
PDF
PHPカンファレンス2014の懇親会飛び込みLT資料
PDF
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
PDF
PDF
PDF
PPT
Viewers also liked
PDF
PDF
Internal php and gdb php core
PDF
A look at FastCgi & Mod_PHP architecture
PDF
Create your own PHP extension, step by step - phpDay 2012 Verona
PDF
PHP, Under The Hood - DPC
PPTX
Techtalk2015 MOD_PHP vs PHP-FPM
PDF
mod_php vs FastCGI vs FPM vs CLI
PPTX
X math new pattern exam in Telangana for 2014- 15
PPT
Međuinduktivitet i zračni transformatori (slike)
PPT
Бренд-комьюнити от Sitko.Ru (Brand-Community of Sitko.Ru)
PDF
Conto+termico ordingroma 4_6+feb+2015 (2)
PDF
PDF
Gianni Marconato - Costruire conoscenza professionale in rete attraverso la n...
PDF
Privacy-Aware Data Management in Information Networks - SIGMOD 2011 Tutorial
PPSX
KEY
PPTX
AOA - Annual OMEL Conference Encourages Osteopathic Discourse
PDF
Ta mnimeiaeinaigiromas167
PPTX
PPTX
Duurzame asfaltontwikkelingen | Jan Voskuilen (InfraTech 2015)
Similar to php and sapi and zendengine2 and...
PDF
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
PDF
PDF
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PPTX
PDF
PHP で実行中のスクリプトの動作を下から覗き見る
PDF
PPT
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PPTX
PDF
"More" Introduction to Zend Tool
PDF
PDF
第1回 松本勉強会 2012 05 11 - 公開版
PDF
More from do_aki
PPTX
Tritonn から Elasticsearch への移行話
PPTX
PPTX
Writing php extensions in golang
PPTX
N対1 レプリケーション + Optimizer Hint
PPTX
PPTX
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
PPTX
PPTX
20141011 mastering mysqlnd
PPTX
PPTX
PHP から Groonga を使うにはこんなコードになるよ!
PPTX
N:1 Replication meets MHA
PDF
PPTX
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor
PPTX
マスタN対スレーブ1レプリケーションの作り方 ~あれから~
PPTX
PDF
A bridge between php and ruby
PDF
Ruby and comparison_and...php
PPTX
PPTX
Ruby enumerable source code reading
PPTX
php and sapi and zendengine2 and... 1. 2. 4. 5. 6. 7. php のコアって
Those who know don't talk.
(知ってる人は教えようとしない)
Those who talk don't know.
(教えてる人はあまり知らない)
PHP: Zend API: PHP のコアをハックする より
http://www.php.net/manual/ja/internals2.ze1.zendapi.php
9. 10. 11. SAPI module
• Web サーバ/OS
と PHP の橋渡
し
• エントリーポ
イントはここ
にある
• 21種類の
bundle module
PHP Script
Extensions
SAPI
module
Zend
Engine2
12. PHP SAPIs
aolserver / apache / apache2filter /
apache2handler / apache_hooks /
caudium / cgi / cli / continuity / embed
/ fpm / isapi / litespeed / milter / nsapi /
phttpd / pi3web / roxen / thttpd / tux /
webjames
(under sapi directory in php-5.5.8 source code)
13. 14. ZendEngine2
• Parser / Compiler
• VirtualMachine
• Memory
Manager
• Garbage
Collection
• (TSRM)
etc…
PHP Script
Extensions
SAPI
module
Zend
Engine2
15. PHP(Zend) Extension
• Core
• Bundle
Extensions
• PECL
Extensions
• PHP Ext と
Zend Ext の違
いはよくわか
らない
PHP Script
Extensions
SAPI
module
Zend
Engine2
PHP extensionとZend extensionの違い - hnwの日記 http://d.hatena.ne.jp/hnw/20130715
16. 17. PHP Script
• <?php
• OpCode に変換
され、VM で実
行
• Extension や
SAPI module を
介して外部と
の入出力が行
われる
PHP Script
Extensions
SAPI
module
Zend
Engine2
18. 19. life of php process
TSRM startup (only ZTS)
SAPI startup
PHP module startup (Zend startup)
PHP request startup
execute php script
PHP request shutdown
PHP module shutdown
SAPI shutdown
TSRM shutdown
20. startup process in SAPI
• prepare sapi_module (sapi_module_struct)
• TSRM startup
– TSRM:=Thread Safe Resource Manager
• SAPI startup
– SAPI:= Server API
– SG (sapi_globals_struct@main/SAPI.h)
• call php_module_startup
– main/main.c
21. php_module_startup
• call zend_startup
• init some global vars (EG,PG,SG,GC_G)
• init some constant
– PHP_VERSION,PHP_OS,PHP_SAPI etc...
• register auto globals ($_GET, $_POST …)
• read and scan ini files
• init php (zend) extensions
22. zend_startup
• init GLOBAL TABLE
– FUNCTION/CLASS/AUTO_GLOBALS/CONSTANTS
• init INI_SCNG / LANG_SCNG
• init interned strings
• register builtin_functions
– strlen, func_get_arg, class_exists, create_function
etc... (Zend/zend_builtin_functions.c)
• register standard constants
– E_ERROR, TRUE, FALSE, NULL etc...
• register $GLOBALS
23. request process (apache)
• prepare SG(request_info)
• call php_request_startup
– reset gc / compile/ executer
– init output buffering stack
– sapi_activate
– init PG(http_globals)
• execute php script
24. 25. 26. 27. 最後に
• php 処理系の全体像を解説しました
• プロセスの持ち方や、startup/shutdown の
制御は SAPI によって異なります
• SAPI と ZendEngine2 の責任の境界がイマ
イチ分からない (SG や sapi_module の扱
い)
• 間違ってたら指摘ください
28.