ホームページ  >  記事  >  バックエンド開発  >  PHP 拡張機能の開発に関する詳細なチュートリアル

PHP 拡張機能の開発に関する詳細なチュートリアル

WBOY
WBOYオリジナル
2016-06-20 13:01:35999ブラウズ

場合によっては、PHP 拡張機能を開発する必要があります。

1. PHP 自体がアクセスできないリソースまたは呼び出し、

2. 拡張機能を通じてパフォーマンスと効率を実現できます。 >3. C で実装する方がよいでしょう

4. ビジネスまたはコード保護を考慮して、

コードをカプセル化します

5. PHP について理解するには、ここから始めてください

ccvita_string という関数を提供する拡張機能があるとします。以下は、そのような PHP 拡張機能の作成方法の詳細な紹介です:


ステップ 1、コードを生成します

PHP は、便宜上、コード ジェネレーターのようなコード ジェネレーターを提供します。拡張機能開発ツール ext_skel の詳細については、説明を参照してください。

まず、ファイル scutephp.skel を作成します。その内容は



で、実行したい拡張機能に scutephp_string という関数があることを ext_skel に伝えます。次に
string scutephp_string(string str)


を実行します。この時点でccvitaの拡張コードフレームワークが出てきました。
cd usr/src/php-5.3.8/ext/<br />./ext_skel --extname=scutephp --proto=scutephp.skel<br />cd scutephp/

2 番目のステップは、構成

を変更してから、config.m4 ファイルを変更して 3 行 10、11、12 の最初の dnl を削除します。つまり、


dnl PHP_ARG_WITH(ccvita, for ccvita support,<br />dnl Make sure that the comment is aligned:<br />dnl [  --with-scutephp            Include scutephp support])


PHP_ARG_WITH(scutephp, for scutephp support,<br />Make sure that the comment is aligned:<br />[  --with-scutephp             Include scutephp support])

に変更されます。 3 番目のステップは、関数

を実装することです。ソース コードを変更します。 scutephp.c ファイル

Find scutephp_string この関数は次のように変更されます



PHP_FUNCTION(scutephp_string)<br />{<br />    char *str = NULL;<br />    int argc = ZEND_NUM_ARGS();<br />    int str_len;<br />    char *result;<br /><br />    if (zend_parse_parameters(argc TSRMLS_CC, "s", &str, &str_len) == FAILURE) <br />        return;<br /><br />    str_len = spprintf(&result, 0, "<a href="%.78s">Link</a>", str);<br />    RETURN_STRINGL(result, str_len, 0); <br />}

ステップ 4. 拡張機能をコンパイルします

保存後、コンパイルを開始します


/usr/local/php/bin/phpize<br />./configure --with-php-config=/usr/local/php/bin/php-config<br />make

ステップ 5、拡張機能を追加します

この時点で、すべてがうまくいけば、拡張機能はすでに modules/scutephp.so にあります。以下は、この拡張機能を PHP に追加して、PHP プログラムが呼び出せるようにします。


cp modules/scutephp.so /usr/local/php/ext/<br />vim /usr/local/php/etc/php.ini<br />extension=/usr/local/php/ext/scutephp.so #在php.ini文件最后增加这一行<br />service php-fpm restart #重启PHP服务<br />cp ccvita.php /data/www/wwwroot/default/

次に、scutephp.php ファイルにアクセスして拡張機能をテストできます。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。