Enviar búsqueda
Cargar
OSS開発勉強会-03
•
0 recomendaciones
•
757 vistas
Kohei KaiGai
Seguir
OSS開発勉強会-03 ~PHPモジュールの書き方~
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 13
Descargar ahora
Descargar para leer sin conexión
Recomendados
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
CodeIgniter入門
CodeIgniter入門
Sho A
PHP勉強会 #51
PHP勉強会 #51
Takako Miyagawa
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
Shigeharu Yamaoka
はじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
Kenichirou Oyama
php-src の歩き方
php-src の歩き方
do_aki
Recomendados
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
CodeIgniter入門
CodeIgniter入門
Sho A
PHP勉強会 #51
PHP勉強会 #51
Takako Miyagawa
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
Shigeharu Yamaoka
はじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
Kenichirou Oyama
php-src の歩き方
php-src の歩き方
do_aki
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
Php5.4
Php5.4
ke-m kamekoopa
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
do_aki
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
do_aki
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
PECL を数えてみた
PECL を数えてみた
y-uti
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
Katsuhiro Miura
JIT のコードを読んでみた
JIT のコードを読んでみた
y-uti
Open Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
Php in ruby
Php in ruby
do_aki
eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」
ericsagnes
はじめての FuelPHP
はじめての FuelPHP
Sho A
20120327 phpstudy58-phake
20120327 phpstudy58-phake
Katsuhiro Ogawa
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何か
do_aki
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
Fuel php osc tokyo2012
Fuel php osc tokyo2012
Fumito Mizuno
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
OSS開発勉強会
OSS開発勉強会
Kohei KaiGai
OSS開発勉強会-07
OSS開発勉強会-07
Kohei KaiGai
Más contenido relacionado
La actualidad más candente
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
Php5.4
Php5.4
ke-m kamekoopa
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
do_aki
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
do_aki
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
PECL を数えてみた
PECL を数えてみた
y-uti
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
Katsuhiro Miura
JIT のコードを読んでみた
JIT のコードを読んでみた
y-uti
Open Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
Php in ruby
Php in ruby
do_aki
eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」
ericsagnes
はじめての FuelPHP
はじめての FuelPHP
Sho A
20120327 phpstudy58-phake
20120327 phpstudy58-phake
Katsuhiro Ogawa
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何か
do_aki
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
Fuel php osc tokyo2012
Fuel php osc tokyo2012
Fumito Mizuno
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
La actualidad más candente
(20)
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
Php5.4
Php5.4
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
PHP AST 徹底解説
PHP AST 徹底解説
PECL を数えてみた
PECL を数えてみた
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
JIT のコードを読んでみた
JIT のコードを読んでみた
Open Source System Administration Framework - Func
Open Source System Administration Framework - Func
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Php in ruby
Php in ruby
eZ Publish勉強会5月「eZ Find」
eZ Publish勉強会5月「eZ Find」
はじめての FuelPHP
はじめての FuelPHP
20120327 phpstudy58-phake
20120327 phpstudy58-phake
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何か
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fuel php osc tokyo2012
Fuel php osc tokyo2012
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
Destacado
OSS開発勉強会
OSS開発勉強会
Kohei KaiGai
OSS開発勉強会-07
OSS開発勉強会-07
Kohei KaiGai
memcached + selinux engine
memcached + selinux engine
Kohei KaiGai
OSS開発勉強会-10
OSS開発勉強会-10
Kohei KaiGai
LCJ2010-KaiGai-sepgsql
LCJ2010-KaiGai-sepgsql
Kohei KaiGai
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
Kohei KaiGai
LAPP/SELinux - A secure web application platform powered by SELinux
LAPP/SELinux - A secure web application platform powered by SELinux
Kohei KaiGai
LAPP/SELinux - A secure web application stack using SE-PostgreSQL
LAPP/SELinux - A secure web application stack using SE-PostgreSQL
Kohei KaiGai
PG-Strom - GPU Accelerated Asyncr
PG-Strom - GPU Accelerated Asyncr
Kohei KaiGai
LAPP/SELinux - A secure web application stack powered by SELinux
LAPP/SELinux - A secure web application stack powered by SELinux
Kohei KaiGai
Writable Foreign Data Wrapper (JPUG Unconference 16-Feb-2013)
Writable Foreign Data Wrapper (JPUG Unconference 16-Feb-2013)
Kohei KaiGai
Security Enhanced PostgreSQL - System-wide consistency in access control
Security Enhanced PostgreSQL - System-wide consistency in access control
Kohei KaiGai
Label based Mandatory Access Control on PostgreSQL
Label based Mandatory Access Control on PostgreSQL
Kohei KaiGai
Row-level Security
Row-level Security
Kohei KaiGai
Getting Memcached Secure
Getting Memcached Secure
Kohei KaiGai
Destacado
(15)
OSS開発勉強会
OSS開発勉強会
OSS開発勉強会-07
OSS開発勉強会-07
memcached + selinux engine
memcached + selinux engine
OSS開発勉強会-10
OSS開発勉強会-10
LCJ2010-KaiGai-sepgsql
LCJ2010-KaiGai-sepgsql
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
LAPP/SELinux - A secure web application platform powered by SELinux
LAPP/SELinux - A secure web application platform powered by SELinux
LAPP/SELinux - A secure web application stack using SE-PostgreSQL
LAPP/SELinux - A secure web application stack using SE-PostgreSQL
PG-Strom - GPU Accelerated Asyncr
PG-Strom - GPU Accelerated Asyncr
LAPP/SELinux - A secure web application stack powered by SELinux
LAPP/SELinux - A secure web application stack powered by SELinux
Writable Foreign Data Wrapper (JPUG Unconference 16-Feb-2013)
Writable Foreign Data Wrapper (JPUG Unconference 16-Feb-2013)
Security Enhanced PostgreSQL - System-wide consistency in access control
Security Enhanced PostgreSQL - System-wide consistency in access control
Label based Mandatory Access Control on PostgreSQL
Label based Mandatory Access Control on PostgreSQL
Row-level Security
Row-level Security
Getting Memcached Secure
Getting Memcached Secure
Similar a OSS開発勉強会-03
Immortal
Immortal
do_aki
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
20091030cakephphandson 01
20091030cakephphandson 01
Yusuke Ando
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
shigeya
PEZY-SC programming overview
PEZY-SC programming overview
Ryo Sakamoto
PHPでマルチスレッド
PHPでマルチスレッド
karky7
Webサーバ勉強会03
Webサーバ勉強会03
oranie Narut
phpext-2-takagi
phpext-2-takagi
Masahiro Takagi
第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai
T93 com入門
T93 com入門
伸男 伊藤
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
Etsuji Nakai
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
Takashi Uemura
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
Personal Cloud Automation
Personal Cloud Automation
Etsuji Nakai
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Taisuke Yamada
Nodejuku01 ohtsu
Nodejuku01 ohtsu
Nanha Park
Code ignitertalk 01
Code ignitertalk 01
Takako Miyagawa
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
Kiyoshi Sawada
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
shinjiigarashi
WordPress と Bootstrap
WordPress と Bootstrap
株式会社ガリレオ(開発グループ)
Similar a OSS開発勉強会-03
(20)
Immortal
Immortal
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
20091030cakephphandson 01
20091030cakephphandson 01
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
PEZY-SC programming overview
PEZY-SC programming overview
PHPでマルチスレッド
PHPでマルチスレッド
Webサーバ勉強会03
Webサーバ勉強会03
phpext-2-takagi
phpext-2-takagi
第21回Creators MeetUp
第21回Creators MeetUp
T93 com入門
T93 com入門
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Personal Cloud Automation
Personal Cloud Automation
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Nodejuku01 ohtsu
Nodejuku01 ohtsu
Code ignitertalk 01
Code ignitertalk 01
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
WordPress と Bootstrap
WordPress と Bootstrap
Más de Kohei KaiGai
20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History
Kohei KaiGai
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API
Kohei KaiGai
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count
Kohei KaiGai
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0
Kohei KaiGai
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
Kohei KaiGai
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
Kohei KaiGai
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS
Kohei KaiGai
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
Kohei KaiGai
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing
Kohei KaiGai
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
Kohei KaiGai
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
Kohei KaiGai
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
Kohei KaiGai
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
20191115-PGconf.Japan
20191115-PGconf.Japan
Kohei KaiGai
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
Kohei KaiGai
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
Kohei KaiGai
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai
Kohei KaiGai
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
Kohei KaiGai
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw
Kohei KaiGai
Más de Kohei KaiGai
(20)
20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
20191115-PGconf.Japan
20191115-PGconf.Japan
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw
Último
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Último
(10)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
OSS開発勉強会-03
1.
PHP拡張モジュールの動作原理 OSS推進センター 海外浩平 <kaigai@ak.jp.nec.com>
2.
PECL (PHP Extension
Community Library) PHPからSELinuxを 呼び出すための インターフェース群 PHPからSELinuxを 呼び出すための インターフェース群
3.
PHPスクリプトの実行 /usr/bin/php -q <? : : my_function(); : : ?> スクリプト /usr/bin/php インタープリタ my_module.so my_function() pgsql.so pq_query() 拡張モジュール 拡張モジュール Zend
APIZend API ビルトイン 関数
4.
zend_module_entry 構造体 (1/2) typedef
struct _zend_module_entry zend_module_entry; struct _zend_module_entry { : const char *name; const struct _zend_function_entry *functions; int (*module_startup_func)(INIT_FUNC_ARGS); int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS); int (*request_startup_func)(INIT_FUNC_ARGS); int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS); void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS); const char *version; : };
5.
zend_module_entry 構造体 (2/2) /*
SELinux module entry */ zend_module_entry selinux_module_entry = { STANDARD_MODULE_HEADER, "selinux", selinux_functions, NULL, /* module_startup_func */ NULL, /* module_shutdown_func */ NULL, /* request_startup_func */ NULL, /* request_shutdown_func */ NULL, /* info_func */ NO_VERSION_YET, STANDARD_MODULE_PROPERTIES, }; #ifdef COMPILE_DL_SELINUX ZEND_GET_MODULE(selinux) #endif zend_module_entry * get_module(void) { return &name##_module_entry; } zend_module_entry * get_module(void) { return &name##_module_entry; }
6.
zend_function_entry構造体 (1/2) #define INTERNAL_FUNCTION_PARAMETERS
¥ int ht, zval *return_value, zval **return_value_ptr, ¥ zval *this_ptr, int return_value_used TSRMLS_DC typedef struct _zend_function_entry { const char *fname; void (*handler)(INTERNAL_FUNCTION_PARAMETERS); const struct _zend_arg_info *arg_info; zend_uint num_args; zend_uint flags; } zend_function_entry;
7.
zval構造体
8.
zend_function_entry構造体 (2/2) ZEND_BEGIN_ARG_INFO(arginfo_selinux_setenforce, 0) ZEND_ARG_INFO(0,
mode) ZEND_END_ARG_INFO() : zend_function_entry selinux_functions[] = { /* global state API */ PHP_FE(selinux_is_enabled, arginfo_selinux_is_enabled) PHP_FE(selinux_getenforce, arginfo_selinux_getenforce) PHP_FE(selinux_setenforce, arginfo_selinux_setenforce) : }; : PHP_FUNCTION(selinux_setenforce) { : }
9.
PHP関数はどう定義されるか? PHP_FUNCTION(selinux_setenforce) { long mode; if (zend_parse_parameters(ZEND_NUM_ARGS()
TSRMLS_CC, "l", &mode) == FAILURE) return; if (!security_setenforce(mode)) RETURN_TRUE; RETURN_FALSE; } void zif_selinux_setenforce(INTERNAL_FUNCTION_PARAMETERS) { return_value->type = IS_BOOL; return_value->value.lval = false; return; } int ht, zval *return_value, zval **return_value_ptr, ¥ zval *this_ptr, int return_value_used TSRMLS_DC
10.
引数の受け渡し (1/2) zend_parse_parameters() 関数 可変長引数を持ち、変換仕様に応じて、スタックに積まれた PHP関数の引数を解釈する 変換仕様の一例 s
… 文字列 (string) l … 整数値 (long) b … 論理値 (bool) d … 浮動小数点型 (double) z … zval | … 次のパラメータは省略可能 (optional) ZEND_API int zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, ...) 【使用例】 zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sb", &name, &length, &new_value);
11.
引数の受け渡し (2/2) Thread Safe
Resource Manager #ifdef ZTS #define TSRMLS_DC , void ***tsrm_ls #define TSRMLS_CC , tsrm_ls #else #define TSRMLS_DC #define TSRMLS_CC #endif Thread-1: zend_executor_globals->argument_stack Thread-N: zend_executor_globals->argument_stack : マルチスレッドが有効なビルドでは、 PHP関数にTSRMへのポインタが渡される マルチスレッドが有効なビルドでは、 PHP関数にTSRMへのポインタが渡される zval *の配列を内包
12.
配列を返す関数 方針 return_value に配列 (IS_ARRAY)
をセットしてリターン 配列オブジェクトを作る方法 array_init(zval *zval, uint size); で初期化 add_assoc_xxx(zval *zval, const char *key, xxx value); add_index_xxx(zval *zval, ulong idx, xxx value); で、配列要素を追加 (xxxの部分はデータ型) 配列として構築された zval を配列の要素としてセットする ことで、多次元配列を表現する事ができる。 array_init(return_value); for (i=0; contexts[i]; i++) { add_index_string(return_value, i, contexts[i], 1); }
13.
参考資料 PHP Manual -
A Hacker's Guide to the Zend Engine http://usphp.com/manual/en/internals2.php PHP Extension Development http://www.somabo.de/talks/200510_zend_conf_php_e xtension_development.pdf
Descargar ahora