From c8e6ebb5628efdef61dccdd05d72620bbeea537f Mon Sep 17 00:00:00 2001 From: Soner Sayakci Date: Sun, 13 Nov 2022 09:46:03 +0000 Subject: [PATCH 1/2] feat: fpm sapi listen always on sockets --- local/php/php_server.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/local/php/php_server.go b/local/php/php_server.go index 676e88a0..60e3b0d2 100644 --- a/local/php/php_server.go +++ b/local/php/php_server.go @@ -32,6 +32,7 @@ import ( "net/url" "os" "os/exec" + "path" "runtime" "strconv" "strings" @@ -46,6 +47,7 @@ import ( "github.com/symfony-cli/symfony-cli/local/html" "github.com/symfony-cli/symfony-cli/local/pid" "github.com/symfony-cli/symfony-cli/local/process" + "github.com/symfony-cli/symfony-cli/util" ) // Server represents a PHP server process (can be php-fpm, php-cgi, or php-cli) @@ -98,11 +100,18 @@ func (p *Server) Start(ctx context.Context, pidFile *pid.PidFile) (*pid.PidFile, var binName, workerName string var args []string if p.Version.IsFPMServer() { + socketDir := path.Join(util.GetHomeDir(), name(p.projectDir)) + + if _, err := os.Stat(socketDir); os.IsNotExist(err) { + os.MkdirAll(socketDir, os.ModePerm) + } + + p.addr = path.Join(util.GetHomeDir(), name(p.projectDir), "php-fpm.sock") fpmConfigFile := p.fpmConfigFile() if err := ioutil.WriteFile(fpmConfigFile, []byte(p.defaultFPMConf()), 0644); err != nil { return nil, nil, errors.WithStack(err) } - pathsToRemove = append(pathsToRemove, fpmConfigFile) + pathsToRemove = append(pathsToRemove, fpmConfigFile, p.addr) binName = "php-fpm" workerName = "PHP-FPM" args = []string{p.Version.ServerPath(), "--nodaemonize", "--fpm-config", fpmConfigFile} @@ -150,7 +159,7 @@ func (p *Server) Start(ctx context.Context, pidFile *pid.PidFile) (*pid.PidFile, Args: args, scriptDir: p.projectDir, } - p.logger.Info().Int("port", port).Msg("listening") + p.logger.Info().Str("listen", p.addr).Msg("listening") phpPidFile := pid.New(pidFile.Dir, append([]string{p.Version.ServerPath()}, e.Args[1:]...)) if phpPidFile.IsRunning() { @@ -224,8 +233,14 @@ func (p *Server) serveFastCGI(env map[string]string, w http.ResponseWriter, r *h max := 10 i := 0 for { - if fcgi, err = fcgiclient.Dial("tcp", p.addr); err == nil { - break + if p.Version.IsFPMServer() { + if fcgi, err = fcgiclient.Dial("unix", p.addr); err == nil { + break + } + } else { + if fcgi, err = fcgiclient.Dial("tcp", p.addr); err == nil { + break + } } i++ if i > max { From 26068a8bdf5685dbcc4c230a98181ef65398d87f Mon Sep 17 00:00:00 2001 From: Soner Sayakci Date: Mon, 28 Nov 2022 09:54:08 +0000 Subject: [PATCH 2/2] refactor: socket path into fpmSocketFile --- local/php/fpm.go | 12 ++++++++++++ local/php/php_server.go | 10 +--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/local/php/fpm.go b/local/php/fpm.go index ecbce2ff..94b44485 100644 --- a/local/php/fpm.go +++ b/local/php/fpm.go @@ -25,10 +25,12 @@ import ( "os" "os/exec" "os/user" + "path" "path/filepath" "strings" "github.com/hashicorp/go-version" + "github.com/symfony-cli/symfony-cli/util" "github.com/symfony-cli/terminal" ) @@ -117,3 +119,13 @@ func (p *Server) fpmConfigFile() string { } return path } + +func (p *Server) fpmSocketFile() string { + socketDir := path.Join(util.GetHomeDir(), name(p.projectDir)) + + if _, err := os.Stat(socketDir); os.IsNotExist(err) { + os.MkdirAll(socketDir, os.ModePerm) + } + + return path.Join(util.GetHomeDir(), name(p.projectDir), "php-fpm.sock") +} diff --git a/local/php/php_server.go b/local/php/php_server.go index 60e3b0d2..d1e29e1f 100644 --- a/local/php/php_server.go +++ b/local/php/php_server.go @@ -32,7 +32,6 @@ import ( "net/url" "os" "os/exec" - "path" "runtime" "strconv" "strings" @@ -47,7 +46,6 @@ import ( "github.com/symfony-cli/symfony-cli/local/html" "github.com/symfony-cli/symfony-cli/local/pid" "github.com/symfony-cli/symfony-cli/local/process" - "github.com/symfony-cli/symfony-cli/util" ) // Server represents a PHP server process (can be php-fpm, php-cgi, or php-cli) @@ -100,13 +98,7 @@ func (p *Server) Start(ctx context.Context, pidFile *pid.PidFile) (*pid.PidFile, var binName, workerName string var args []string if p.Version.IsFPMServer() { - socketDir := path.Join(util.GetHomeDir(), name(p.projectDir)) - - if _, err := os.Stat(socketDir); os.IsNotExist(err) { - os.MkdirAll(socketDir, os.ModePerm) - } - - p.addr = path.Join(util.GetHomeDir(), name(p.projectDir), "php-fpm.sock") + p.addr = p.fpmSocketFile() fpmConfigFile := p.fpmConfigFile() if err := ioutil.WriteFile(fpmConfigFile, []byte(p.defaultFPMConf()), 0644); err != nil { return nil, nil, errors.WithStack(err)