美文网首页
【转】用Go写PHP小扩展

【转】用Go写PHP小扩展

作者: MrBryan | 来源:发表于2021-07-01 16:03 被阅读0次

    源地址:http://www.jwsblog.com/archives/58.html

    环境

    • ubuntu 16.04
    • go1.6.3 linux/amd64
    • php-go
    • php7.0.9

    php-go安装

    参考说明文档

    示例

    示例模块php-go/example/hello.go中比较全的写出了大部分示例(虽然没多少注释~)

    # 编译示例模块hello.so
    cd cd $GOPATH/src/github.com/kitech/php-go
    make
    ls -lh php-go/hello.so
    

    tips: make时可能会出现make: /usr/bin/php-config:命令未找到,手动修改下Makefile的第10行PHPCFG={yourPath}

    将php-go/hello.so拷贝到你php的extension目录下,添加php.ini,php -m |grep hello能看到hello扩展没报错就ok了,重启nginx就可以在php里测试了

    编写自己的小Demo

    • go
    // php-go/example/jw.go
    package main
    
    import (
        "github.com/kitech/php-go/phpgo"
    )
    
    type Jw struct {
    }
    
    func NewJw() *Jw {
        return &Jw{}
    }
    
    func (j *Jw) Test(m int, n int) int {
        return m + n
    }
    
    func main() {
        panic("wtf")
    }
    
    func Jw_hello() string {
        return "Aaaa"
    }
    
    func init() {
        phpgo.InitExtension("jw", "0.1")
        phpgo.AddFunc("jw_hello", Jw_hello)
        phpgo.AddClass("Jw", NewJw)
    }
    
    • 编译

      • 先修改php-go/Makefile,添加编译模块

        all:
        go build -v -buildmode=c-shared -o jw.so examples/jw.go
        clean:
        rm -f jw.so
        
    - 编译
    
    cd cd $GOPATH/src/github.com/kitech/php-go
    make
    ls -lh php-go/jw.so
    
    sudo cp $GOPATH/src/github.com/kitech/php-go/jw.so  $PHP_PATH/lib/php/extensions/no-debug-non-zts-20151012
    echo "jw.so" >> $PHP_PATH/etc/php.ini
    sudo service nginx restart
    
    
    - 写php测试模块
    
    image.png

    相关文章

      网友评论

          本文标题:【转】用Go写PHP小扩展

          本文链接:https://www.haomeiwen.com/subject/uzgjultx.html