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

藏色散人
풀어 주다: 2021-03-02 15:46:16
앞으로
3914명이 탐색했습니다.

다음 튜토리얼 칼럼인 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿