@@ -114,42 +114,60 @@ retry:
114114func (f * FrankenPHPApp ) addModuleWorkers (workers ... workerConfig ) ([]workerConfig , error ) {
115115 for i := range workers {
116116 w := & workers [i ]
117+
117118 if frankenphp .EmbeddedAppPath != "" && filepath .IsLocal (w .FileName ) {
118119 w .FileName = filepath .Join (frankenphp .EmbeddedAppPath , w .FileName )
119120 }
121+
120122 if w .Name == "" {
121123 w .Name = f .generateUniqueModuleWorkerName (w .FileName )
122124 } else if ! strings .HasPrefix (w .Name , "m#" ) {
123125 w .Name = "m#" + w .Name
124126 }
127+
125128 f .Workers = append (f .Workers , * w )
126129 }
130+
127131 return workers , nil
128132}
129133
130134func (f * FrankenPHPApp ) Start () error {
131135 repl := caddy .NewReplacer ()
132136
133- opts := []frankenphp.Option {
137+ optionsMU .RLock ()
138+ opts := make ([]frankenphp.Option , 0 , len (options )+ len (f .Workers )+ 7 )
139+ opts = append (opts , options ... )
140+ optionsMU .RUnlock ()
141+
142+ opts = append (opts ,
134143 frankenphp .WithContext (f .ctx ),
135144 frankenphp .WithLogger (f .logger ),
136145 frankenphp .WithNumThreads (f .NumThreads ),
137146 frankenphp .WithMaxThreads (f .MaxThreads ),
138147 frankenphp .WithMetrics (f .metrics ),
139148 frankenphp .WithPhpIni (f .PhpIni ),
140149 frankenphp .WithMaxWaitTime (f .MaxWaitTime ),
141- }
142-
143- optionsMU .RLock ()
144- opts = append (opts , options ... )
145- optionsMU .RUnlock ()
146-
147- for _ , w := range append (f .Workers ) {
148- workerOpts := []frankenphp.WorkerOption {
149- frankenphp .WithWorkerEnv (w .Env ),
150- frankenphp .WithWorkerWatchMode (w .Watch ),
151- frankenphp .WithWorkerMaxFailures (w .MaxConsecutiveFailures ),
152- frankenphp .WithWorkerMaxThreads (w .MaxThreads ),
150+ )
151+
152+ for _ , w := range f .Workers {
153+ workerOpts := make ([]frankenphp.WorkerOption , 0 , len (w .requestOptions )+ 4 )
154+
155+ if w .requestOptions == nil {
156+ workerOpts = append (workerOpts ,
157+ frankenphp .WithWorkerEnv (w .Env ),
158+ frankenphp .WithWorkerWatchMode (w .Watch ),
159+ frankenphp .WithWorkerMaxFailures (w .MaxConsecutiveFailures ),
160+ frankenphp .WithWorkerMaxThreads (w .MaxThreads ),
161+ )
162+ } else {
163+ workerOpts = append (
164+ workerOpts ,
165+ frankenphp .WithWorkerEnv (w .Env ),
166+ frankenphp .WithWorkerWatchMode (w .Watch ),
167+ frankenphp .WithWorkerMaxFailures (w .MaxConsecutiveFailures ),
168+ frankenphp .WithWorkerMaxThreads (w .MaxThreads ),
169+ frankenphp .WithWorkerRequestOptions (w .requestOptions ... ),
170+ )
153171 }
154172
155173 opts = append (opts , frankenphp .WithWorkers (w .Name , repl .ReplaceKnown (w .FileName , "" ), w .Num , workerOpts ... ))
0 commit comments