ホームページ  >  記事  >  バックエンド開発  >  golangでPHP拡張機能を記述する方法

golangでPHP拡張機能を記述する方法

藏色散人
藏色散人転載
2021-03-02 15:46:163832ブラウズ

golang の次のチュートリアル コラムでは、golang で PHP 拡張メソッドを記述する方法を紹介します。必要な友人の役に立てば幸いです。

golang PHP 拡張機能を記述する

phper は、php 拡張機能が C/C で記述されていることを知っています。

開発のため C/C を使用します。効率の問題 Golang は php-extension を記述します
Golang の開発効率とエコロジーを最大限に活用して PHP に貢献します。

環境の準備

wsl ubuntu
golang 1.13
php 7.3

新しいプロジェクト

php7.3 里面的 ext_skel 和以前版本参数不一样,请查看 help 操作
php:
./ext_skel.php --ext goserver --onlyunix
golang:
 mkdir goserver

カプセル化ファイル

C ファイルを golang ファイルにカプセル化

package main
/*
 php扩展.C文件内容
*/
import "C"    
func main() {}

build

$ phpize
$ ./configure
$ CGO_CFLAGS="-g -O2 -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 \  
-I. -DPHP_ATOM_INC \
-I/usr/include/php/20180731/include \  
-I/usr/include/php/20180731/main \
-I/usr/include/php/20180731 \
-I/usr/include/php/20180731/main \  
-I/usr/include/php/20180731/TSRM \  
-I/usr/include/php/20180731/Zend \  
-I/usr/include/php/20180731/ext \  
-I/usr/include/php/20180731/ext/date/lib \  
-DHAVE_CONFIG_H -DCOMPILE_DL_GOPHP -fPIC -DPIC" \  
CGO_LDFLAGS="-Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-all -Wl,-z,nodelete" \  
go build -p 1 -gcflags "-l" -buildmode=c-shared -o modules/goserver.so goserver.go
CGO コンパイル パラメータ 実際の状況に応じて入力します。生成された Makefile ファイルでパラメータを確認できます。

run

php.ini を変更し、extension=goserver を追加します。 .so

付属の拡張機能を実行する関数テスト


#

以上がgolangでPHP拡張機能を記述する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。