fcgx
Configuration
Configuration
fcgx provides a Config struct to customize client behavior.
Default Configuration
config := fcgx.DefaultConfig()
// MaxWriteSize: 65500 bytes
// ConnectTimeout: 5 seconds
// RequestTimeout: 30 seconds
Config Options
| Option | Default | Description |
|---|---|---|
MaxWriteSize |
65500 | Maximum chunk size for STDIN data |
ConnectTimeout |
5s | Timeout for establishing connections |
RequestTimeout |
30s | Default timeout when context has no deadline |
Custom Configuration
config := &fcgx.Config{
MaxWriteSize: 32768, // 32KB chunks
ConnectTimeout: 2 * time.Second,
RequestTimeout: 10 * time.Second,
}
client, err := fcgx.DialWithConfig("unix", "/var/run/php-fpm.sock", config)
if err != nil {
return err
}
defer client.Close()
With Context
config := &fcgx.Config{
ConnectTimeout: 2 * time.Second,
RequestTimeout: 10 * time.Second,
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
client, err := fcgx.DialContextWithConfig(ctx, "unix", "/var/run/php-fpm.sock", config)
Timeout Behavior
Connect Timeout
Controls how long to wait when establishing a connection:
config := &fcgx.Config{
ConnectTimeout: 500 * time.Millisecond, // Fail fast
}
Request Timeout
Used when the context has no deadline:
config := &fcgx.Config{
RequestTimeout: 60 * time.Second, // Long-running scripts
}
// This request uses RequestTimeout (60s)
resp, err := client.Get(context.Background(), params)
// This request uses context deadline (5s)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
resp, err := client.Get(ctx, params)
MaxWriteSize
Controls chunking for large request bodies:
// For memory-constrained environments
config := &fcgx.Config{
MaxWriteSize: 16384, // 16KB chunks
}
// For high-throughput scenarios
config := &fcgx.Config{
MaxWriteSize: 65500, // Maximum (default)
}
Production Example
func NewFPMClient(socketPath string) (*fcgx.Client, error) {
config := &fcgx.Config{
MaxWriteSize: 65500,
ConnectTimeout: 2 * time.Second,
RequestTimeout: 30 * time.Second,
}
ctx, cancel := context.WithTimeout(context.Background(), config.ConnectTimeout)
defer cancel()
return fcgx.DialContextWithConfig(ctx, "unix", socketPath, config)
}
Next Steps
- Error Handling - Handle errors gracefully
- API Reference - Complete API documentation