package
0.0.0-20211113143533-446cb24580d7
Repository: https://github.com/jlzan1314/go-toolkit.git
Documentation: pkg.go.dev

# README

Next

该模块实现了与php-fpm进程通信的功能,将http请求转发给php-fpm进程处理。

// CreateHandler 创建服务处理器
func CreateHandler(params *Config, network, address string) http.Handler {
    fpmAddr := address
    if network == "unix" {
        fpmAddr = fmt.Sprintf("%s:%s", network, address)
    }

    rootDir := filepath.Dir(params.EndpointFile)

    conf := next.Config{
        EndpointFile:    params.EndpointFile,
        ServerIP:        params.ServiceIP,
        ServerPort:      params.ServicePort,
        SoftwareName:    "php-server",
        SoftwareVersion: "0.0.1",
        Rules:           []next.Rule{next.NewPHPRule(rootDir, []string{fpmAddr})},
        RequestLogHandler: func(rc *next.RequestContext) {
            var message bytes.Buffer
            if err := params.AccessLogTemplate.Execute(&message, rc); err != nil {
                log.Module("server").Errorf("invalid log format: %s", err.Error())
            } else {
                if params.Debug {
                    log.Module("server.request").
                        WithContext(rc.ToMap()).Debugf(message.String())
                } else {
                    log.Module("server.request").Debugf(message.String())
                }
            }
        },
    }

    return next.CreateHttpHandler(&conf)
}


http.HandleFunc("/", CreateHandler(config, network, address).ServeHTTP)
srv := &http.Server{Handler: http.DefaultServeMux}
go func() {
    if err := srv.Serve(listener); err != nil {
        log.Debugf("The http server has stopped: %v", err)
    }
}()

该模块大部分代码是从Caddy中提取出来的,参考 https://github.com/mholt/caddy/tree/master/caddyhttp/fastcgi