Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kohei KaiGai
PDF, PPTX
765 views
OSS開発勉強会-03
OSS開発勉強会-03 ~PHPモジュールの書き方~
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 13
2
/ 13
3
/ 13
4
/ 13
5
/ 13
6
/ 13
7
/ 13
8
/ 13
9
/ 13
10
/ 13
11
/ 13
12
/ 13
13
/ 13
More Related Content
PPTX
php and sapi and zendengine2 and...
by
do_aki
PDF
CodeIgniter入門
by
Sho A
PDF
PHP勉強会 #51
by
Takako Miyagawa
PPTX
運用構築技術者の為のPSプログラミング第1回
by
Shigeharu Yamaoka
PDF
はじめてのCodeIgniter
by
Yuya Matsushima
PDF
Symfony2でより良いソフトウェアを作るために
by
Atsuhiro Kubo
PDF
実"戦"CakePHP Plugin
by
Kenichirou Oyama
PPTX
php-src の歩き方
by
do_aki
php and sapi and zendengine2 and...
by
do_aki
CodeIgniter入門
by
Sho A
PHP勉強会 #51
by
Takako Miyagawa
運用構築技術者の為のPSプログラミング第1回
by
Shigeharu Yamaoka
はじめてのCodeIgniter
by
Yuya Matsushima
Symfony2でより良いソフトウェアを作るために
by
Atsuhiro Kubo
実"戦"CakePHP Plugin
by
Kenichirou Oyama
php-src の歩き方
by
do_aki
What's hot
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
by
hiro345
PDF
WTM53 phpフレームワーク いまさらcodeigniter
by
Masanori Oobayashi
PPT
Puppet Best Practices? at COOKPAD
by
Gosuke Miyashita
PDF
Php5.4
by
ke-m kamekoopa
PPTX
PHP と SAPI と ZendEngine3 と
by
do_aki
PPTX
PHP AST 徹底解説(補遺)
by
do_aki
PPTX
PHP AST 徹底解説
by
do_aki
PDF
PECL を数えてみた
by
y-uti
PDF
FuelPHPで3種のprofilerを使ってみた
by
Katsuhiro Miura
PDF
JIT のコードを読んでみた
by
y-uti
PPTX
Open Source System Administration Framework - Func
by
Gosuke Miyashita
PDF
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
by
Hiroaki KOBAYASHI
PPTX
Php in ruby
by
do_aki
PDF
eZ Publish勉強会5月「eZ Find」
by
ericsagnes
PDF
はじめての FuelPHP
by
Sho A
PDF
20120327 phpstudy58-phake
by
Katsuhiro Ogawa
PPTX
signal の話 或いは Zend Signals とは何か
by
do_aki
PDF
FuelPHP Osu Nagoya vol.1
by
Fumito Mizuno
PDF
Fuel php osc tokyo2012
by
Fumito Mizuno
PDF
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
by
kenjis
15分でCakePHPを始める方法(Nseg 2013-11-09 )
by
hiro345
WTM53 phpフレームワーク いまさらcodeigniter
by
Masanori Oobayashi
Puppet Best Practices? at COOKPAD
by
Gosuke Miyashita
Php5.4
by
ke-m kamekoopa
PHP と SAPI と ZendEngine3 と
by
do_aki
PHP AST 徹底解説(補遺)
by
do_aki
PHP AST 徹底解説
by
do_aki
PECL を数えてみた
by
y-uti
FuelPHPで3種のprofilerを使ってみた
by
Katsuhiro Miura
JIT のコードを読んでみた
by
y-uti
Open Source System Administration Framework - Func
by
Gosuke Miyashita
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
by
Hiroaki KOBAYASHI
Php in ruby
by
do_aki
eZ Publish勉強会5月「eZ Find」
by
ericsagnes
はじめての FuelPHP
by
Sho A
20120327 phpstudy58-phake
by
Katsuhiro Ogawa
signal の話 或いは Zend Signals とは何か
by
do_aki
FuelPHP Osu Nagoya vol.1
by
Fumito Mizuno
Fuel php osc tokyo2012
by
Fumito Mizuno
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
by
kenjis
Viewers also liked
PPT
OSS開発勉強会
by
Kohei KaiGai
PDF
OSS開発勉強会-07
by
Kohei KaiGai
PDF
memcached + selinux engine
by
Kohei KaiGai
PPT
OSS開発勉強会-10
by
Kohei KaiGai
PDF
LCJ2010-KaiGai-sepgsql
by
Kohei KaiGai
PDF
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
by
Kohei KaiGai
PDF
LAPP/SELinux - A secure web application platform powered by SELinux
by
Kohei KaiGai
PDF
LAPP/SELinux - A secure web application stack using SE-PostgreSQL
by
Kohei KaiGai
PDF
PG-Strom - GPU Accelerated Asyncr
by
Kohei KaiGai
PDF
LAPP/SELinux - A secure web application stack powered by SELinux
by
Kohei KaiGai
PDF
Writable Foreign Data Wrapper (JPUG Unconference 16-Feb-2013)
by
Kohei KaiGai
PDF
Security Enhanced PostgreSQL - System-wide consistency in access control
by
Kohei KaiGai
PDF
Label based Mandatory Access Control on PostgreSQL
by
Kohei KaiGai
PDF
Row-level Security
by
Kohei KaiGai
PDF
Getting Memcached Secure
by
Kohei KaiGai
OSS開発勉強会
by
Kohei KaiGai
OSS開発勉強会-07
by
Kohei KaiGai
memcached + selinux engine
by
Kohei KaiGai
OSS開発勉強会-10
by
Kohei KaiGai
LCJ2010-KaiGai-sepgsql
by
Kohei KaiGai
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
by
Kohei KaiGai
LAPP/SELinux - A secure web application platform powered by SELinux
by
Kohei KaiGai
LAPP/SELinux - A secure web application stack using SE-PostgreSQL
by
Kohei KaiGai
PG-Strom - GPU Accelerated Asyncr
by
Kohei KaiGai
LAPP/SELinux - A secure web application stack powered by SELinux
by
Kohei KaiGai
Writable Foreign Data Wrapper (JPUG Unconference 16-Feb-2013)
by
Kohei KaiGai
Security Enhanced PostgreSQL - System-wide consistency in access control
by
Kohei KaiGai
Label based Mandatory Access Control on PostgreSQL
by
Kohei KaiGai
Row-level Security
by
Kohei KaiGai
Getting Memcached Secure
by
Kohei KaiGai
More from Kohei KaiGai
PDF
20221116_DBTS_PGStrom_History
by
Kohei KaiGai
PDF
20221111_JPUG_CustomScan_API
by
Kohei KaiGai
PDF
20211112_jpugcon_gpu_and_arrow
by
Kohei KaiGai
PDF
20210928_pgunconf_hll_count
by
Kohei KaiGai
PDF
20210731_OSC_Kyoto_PGStrom3.0
by
Kohei KaiGai
PDF
20210511_PGStrom_GpuCache
by
Kohei KaiGai
PDF
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
by
Kohei KaiGai
PDF
20201128_OSC_Fukuoka_Online_GPUPostGIS
by
Kohei KaiGai
PDF
20201113_PGconf_Japan_GPU_PostGIS
by
Kohei KaiGai
PDF
20201006_PGconf_Online_Large_Data_Processing
by
Kohei KaiGai
PDF
20200828_OSCKyoto_Online
by
Kohei KaiGai
PDF
20200806_PGStrom_PostGIS_GstoreFdw
by
Kohei KaiGai
PDF
20200424_Writable_Arrow_Fdw
by
Kohei KaiGai
PDF
20191211_Apache_Arrow_Meetup_Tokyo
by
Kohei KaiGai
PDF
20191115-PGconf.Japan
by
Kohei KaiGai
PDF
20190926_Try_RHEL8_NVMEoF_Beta
by
Kohei KaiGai
PDF
20190925_DBTS_PGStrom
by
Kohei KaiGai
PDF
20190909_PGconf.ASIA_KaiGai
by
Kohei KaiGai
PDF
20190516_DLC10_PGStrom
by
Kohei KaiGai
PDF
20190418_PGStrom_on_ArrowFdw
by
Kohei KaiGai
20221116_DBTS_PGStrom_History
by
Kohei KaiGai
20221111_JPUG_CustomScan_API
by
Kohei KaiGai
20211112_jpugcon_gpu_and_arrow
by
Kohei KaiGai
20210928_pgunconf_hll_count
by
Kohei KaiGai
20210731_OSC_Kyoto_PGStrom3.0
by
Kohei KaiGai
20210511_PGStrom_GpuCache
by
Kohei KaiGai
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
by
Kohei KaiGai
20201128_OSC_Fukuoka_Online_GPUPostGIS
by
Kohei KaiGai
20201113_PGconf_Japan_GPU_PostGIS
by
Kohei KaiGai
20201006_PGconf_Online_Large_Data_Processing
by
Kohei KaiGai
20200828_OSCKyoto_Online
by
Kohei KaiGai
20200806_PGStrom_PostGIS_GstoreFdw
by
Kohei KaiGai
20200424_Writable_Arrow_Fdw
by
Kohei KaiGai
20191211_Apache_Arrow_Meetup_Tokyo
by
Kohei KaiGai
20191115-PGconf.Japan
by
Kohei KaiGai
20190926_Try_RHEL8_NVMEoF_Beta
by
Kohei KaiGai
20190925_DBTS_PGStrom
by
Kohei KaiGai
20190909_PGconf.ASIA_KaiGai
by
Kohei KaiGai
20190516_DLC10_PGStrom
by
Kohei KaiGai
20190418_PGStrom_on_ArrowFdw
by
Kohei KaiGai
Recently uploaded
PDF
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
by
Matsushita Laboratory
PDF
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
by
Matsushita Laboratory
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
by
Matsushita Laboratory
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
by
Matsushita Laboratory
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
Download