@@ -4,7 +4,6 @@ package frankenphp
44// #include "frankenphp.h"
55import "C"
66import (
7- "context"
87 "errors"
98 "fmt"
109 "net/http"
@@ -56,40 +55,25 @@ func startWorkers(fileName string, nbWorkers int, env map[string]string) error {
5655 defer shutdownWG .Done ()
5756 for {
5857 // Create main dummy request
59- fc := & FrankenPHPContext {
60- env : make (map [string ]string , len (env )+ 1 ),
61- done : make (chan interface {}),
62- }
63- fc .scriptFilename = absFileName
64- fc .env ["SCRIPT_FILENAME" ] = absFileName
65- for k , v := range env {
66- fc .env [k ] = v
58+ r , err := http .NewRequest (http .MethodGet , filepath .Base (absFileName ), nil )
59+ if err != nil {
60+ panic (err )
6761 }
68-
69- r , err := http .NewRequestWithContext (context .WithValue (
70- context .Background (),
71- contextKey ,
72- fc ,
73- ), "GET" , "" , nil )
74-
62+ r , err = NewRequestWithContext (
63+ r ,
64+ WithRequestDocumentRoot (filepath .Dir (absFileName ), false ),
65+ WithRequestEnv (env ),
66+ )
7567 if err != nil {
76- // TODO: this should never happen, maybe can we remove this block?
77- m .Lock ()
78- defer m .Unlock ()
79- errs = append (errs , fmt .Errorf ("workers %q: unable to create main worker request: %w" , absFileName , err ))
80-
81- return
68+ panic (err )
8269 }
8370
8471 l .Debug ("starting" , zap .String ("worker" , absFileName ))
8572 if err := ServeHTTP (nil , r ); err != nil {
86- m .Lock ()
87- defer m .Unlock ()
88- errs = append (errs , fmt .Errorf ("workers %q: unable to start: %w" , absFileName , err ))
89-
90- return
73+ panic (err )
9174 }
9275
76+ fc := r .Context ().Value (contextKey ).(* FrankenPHPContext )
9377 if fc .currentWorkerRequest != 0 {
9478 // Terminate the pending HTTP request handled by the worker
9579 maybeCloseContext (fc .currentWorkerRequest .Value ().(* http.Request ).Context ().Value (contextKey ).(* FrankenPHPContext ))
@@ -100,7 +84,11 @@ func startWorkers(fileName string, nbWorkers int, env map[string]string) error {
10084 // TODO: make the max restart configurable
10185 if _ , ok := workersRequestChans .Load (absFileName ); ok {
10286 workersReadyWG .Add (1 )
103- l .Error ("unexpected termination, restarting" , zap .String ("worker" , absFileName ))
87+ if fc .exitStatus == 0 {
88+ l .Info ("restarting" , zap .String ("worker" , absFileName ))
89+ } else {
90+ l .Error ("unexpected termination, restarting" , zap .String ("worker" , absFileName ), zap .Int ("exit_status" , int (fc .exitStatus )))
91+ }
10492 } else {
10593 break
10694 }
0 commit comments