>  기사  >  백엔드 개발  >  golang에서 PHP 확장을 작성하는 방법

golang에서 PHP 확장을 작성하는 방법

藏色散人
藏色散人앞으로
2021-03-02 15:46:163832검색

다음 튜토리얼 칼럼인 golang에서는 golang에서 PHP 확장 메소드를 작성하는 방법을 소개하겠습니다. 필요한 친구들에게 도움이 되길 바랍니다!

golang PHP 확장 작성

phper는 php-extension이 C/C++로 작성되었다는 사실을 모두 알고 있습니다.
C/C++의 개발 효율성 문제로 인해 우리는 golang을 사용하여 php-extension을 작성합니다
PHP를 위한 golang의 개발 효율성과 생태학 벽돌과 모르타르를 추가하세요.

환경 준비

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 컴파일 매개변수는 실제 Fill 상황을 기반으로 하며 생성된 매개변수는 makefile 파일에서 볼 수 있습니다

run

php.ini를 수정하고 확장자=goserver.so를 추가하세요
확장자와 함께 제공되는 기능 테스트를 실행하세요


위 내용은 golang에서 PHP 확장을 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제