mirror of
https://github.com/dunglas/frankenphp.git
synced 2025-12-24 13:38:11 +08:00
* add metrics * change how counting works * also replace dots * check that metrics exist * rename NullMetrics to nullMetrics * update go.sum * register collectors only once * add tests * add tests for metrics and fix bugs * keep old metrics around for test * properly reset during shutdown * use the same method as frankenphp * Revert "keep old metrics around for test" This reverts commit 1f0df6f6bdaebf32aec346f068d6f42a0b5f4007. * change to require.NoError * compile regex only once * remove name sanitizer * use require * parameterize host port because security software sucks * remove need for renaming workers * increase number of threads and add tests * fix where frankenphp configuration was bleeding into later tests * adds basic docs for metrics * Add caddy metrics link Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Fix typos Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * address feedback * change comment to be much more "dangerous" --------- Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
60 lines
1.1 KiB
Go
60 lines
1.1 KiB
Go
package frankenphp
|
|
|
|
import (
|
|
"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
|
|
workers []workerOpt
|
|
logger *zap.Logger
|
|
metrics Metrics
|
|
}
|
|
|
|
type workerOpt struct {
|
|
fileName string
|
|
num int
|
|
env PreparedEnv
|
|
}
|
|
|
|
// 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 WithMetrics(m Metrics) Option {
|
|
return func(o *opt) error {
|
|
o.metrics = m
|
|
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// WithWorkers configures the PHP workers to start.
|
|
func WithWorkers(fileName string, num int, env map[string]string) Option {
|
|
return func(o *opt) error {
|
|
o.workers = append(o.workers, workerOpt{fileName, num, PrepareEnv(env)})
|
|
|
|
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
|
|
}
|
|
}
|