Files
frankenphp/options.go
Indra Gunawan 87315a19ae feat: introduces worker name option, use label on worker metrics instead (#1376)
* add worker name option and use it in logs and metrics, update tests

* fix missing reference for collector

* update tests

* update docs

* fix conflict

* add missing allowedDirectives

* update tests
2025-03-22 12:32:59 +01:00

92 lines
1.8 KiB
Go

package frankenphp
import (
"time"
"go.uber.org/zap"
)
// Option instances allow to configure FrankenPHP.
type Option func(h *opt) error
// opt contains the available options.
//
// If you change this, also update the Caddy module and the documentation.
type opt struct {
numThreads int
maxThreads int
workers []workerOpt
logger *zap.Logger
metrics Metrics
phpIni map[string]string
maxWaitTime time.Duration
}
type workerOpt struct {
name string
fileName string
num int
env PreparedEnv
watch []string
}
// WithNumThreads configures the number of PHP threads to start.
func WithNumThreads(numThreads int) Option {
return func(o *opt) error {
o.numThreads = numThreads
return nil
}
}
func WithMaxThreads(maxThreads int) Option {
return func(o *opt) error {
o.maxThreads = maxThreads
return nil
}
}
func WithMetrics(m Metrics) Option {
return func(o *opt) error {
o.metrics = m
return nil
}
}
// WithWorkers configures the PHP workers to start.
func WithWorkers(name string, fileName string, num int, env map[string]string, watch []string) Option {
return func(o *opt) error {
o.workers = append(o.workers, workerOpt{name, fileName, num, PrepareEnv(env), watch})
return nil
}
}
// WithLogger configures the global logger to use.
func WithLogger(l *zap.Logger) Option {
return func(o *opt) error {
o.logger = l
return nil
}
}
// WithPhpIni configures user defined PHP ini settings.
func WithPhpIni(overrides map[string]string) Option {
return func(o *opt) error {
o.phpIni = overrides
return nil
}
}
// WithMaxWaitTime configures the max time a request may be stalled waiting for a thread.
func WithMaxWaitTime(maxWaitTime time.Duration) Option {
return func(o *opt) error {
o.maxWaitTime = maxWaitTime
return nil
}
}