File di configurazione
Posizione
I file di configurazione di webman si trovano nella directory config/
, e nel progetto è possibile ottenere la relativa configurazione tramite la funzione config()
.
Ottenere configurazione
Ottenere tutte le configurazioni
config();
Ottenere tutte le configurazioni in config/app.php
config('app');
Ottenere la configurazione debug
in config/app.php
config('app.debug');
Se la configurazione è un array, è possibile ottenere il valore degli elementi interni dell'array tramite .
, ad esempio
config('file.key1.key2');
Valore predefinito
config($key, $default);
config attraverso il secondo parametro passa un valore predefinito, se la configurazione non esiste ritorna il valore predefinito.
Se la configurazione non esiste e non è stato impostato alcun valore predefinito, ritorna null.
Configurazione personalizzata
Gli sviluppatori possono aggiungere i propri file di configurazione nella directory config/
, ad esempio
config/payment.php
<?php
return [
'key' => '...',
'secret' => '...'
];
Utilizzando durante l'ottenimento della configurazione
config('payment');
config('payment.key');
config('payment.key');
Modificare configurazione
Webman non supporta la modifica dinamica della configurazione, tutte le configurazioni devono essere modificate manualmente nei relativi file di configurazione, e deve essere eseguito reload o restart per riavviare.
Attenzione
La configurazione del serverconfig/server.php
e la configurazione del processoconfig/process.php
non supportano reload, è necessario restart per avere effetto.
Avviso speciale
Se desideri creare e leggere file di configurazione in una sottodirectory sotto config, ad esempio: config/order/status.php
, allora la directory config/order
deve contenere un file app.php
con il seguente contenuto
<?php
return [
'enable' => true,
];
enable
impostato su true
indica che il framework deve leggere la configurazione in questa directory.
La struttura finale della directory dei file di configurazione sarà simile a quella sottostante
├── config
│ ├── order
│ │ ├── app.php
│ │ └── status.php
In questo modo puoi leggere l'array restituito o i dati di una chiave specifica da status.php
utilizzando config.order.status
.
Spiegazione dei file di configurazione
server.php
return [
'listen' => 'http://0.0.0.0:8787', // Porta di ascolto (rimossa a partire dalla versione 1.6.0, configurare in config/process.php)
'transport' => 'tcp', // Protocollo di trasporto (rimossa a partire dalla versione 1.6.0, configurare in config/process.php)
'context' => [], // Configurazioni ssl e altro (rimossa a partire dalla versione 1.6.0, configurare in config/process.php)
'name' => 'webman', // Nome del processo (rimossa a partire dalla versione 1.6.0, configurare in config/process.php)
'count' => cpu_count() * 4, // Numero di processi (rimossa a partire dalla versione 1.6.0, configurare in config/process.php)
'user' => '', // Utente (rimossa a partire dalla versione 1.6.0, configurare in config/process.php)
'group' => '', // Gruppo utente (rimossa a partire dalla versione 1.6.0, configurare in config/process.php)
'reusePort' => false, // Attivare la riutilizzazione della porta (rimossa a partire dalla versione 1.6.0, configurare in config/process.php)
'event_loop' => '', // Classe del ciclo di eventi, selezione automatica predefinita
'stop_timeout' => 2, // Massimo tempo di attesa per completare il trattamento quando si riceve il segnale stop/restart/reload, superato questo tempo il processo verrà forzatamente terminato
'pid_file' => runtime_path() . '/webman.pid', // Posizione di archiviazione del file pid
'status_file' => runtime_path() . '/webman.status', // Posizione di archiviazione del file di stato
'stdout_file' => runtime_path() . '/logs/stdout.log', // Posizione del file di output standard, dopo l'avvio di webman, tutti gli output verranno scritti in questo file
'log_file' => runtime_path() . '/logs/workerman.log', // Posizione del file di log di workerman
'max_package_size' => 10 * 1024 * 1024 // Dimensione massima del pacchetto dati, 10M. La dimensione dei file caricati è soggetta a questo limite
];
app.php
return [
'debug' => true, // Attivare la modalità debug, gli errori della pagina mostreranno stack trace e altre informazioni di debug, dovrebbe essere disattivato per ambienti di produzione sicuri
'error_reporting' => E_ALL, // Livello di reporting degli errori
'default_timezone' => 'Asia/Shanghai', // Fuso orario predefinito
'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public', // Posizione della directory pubblica
'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime', // Posizione della directory runtime
'controller_suffix' => 'Controller', // Suffisso del controller
'controller_reuse' => false, // Riutilizzo del controller
];
process.php
use support\Log;
use support\Request;
use app\process\Http;
global $argv;
return [
// Configurazione del processo webman
'webman' => [
'handler' => Http::class, // Classe di gestione del processo
'listen' => 'http://0.0.0.0:8787', // Indirizzo di ascolto
'count' => cpu_count() * 4, // Numero di processi, 4 volte il numero di cpu
'user' => '', // Utente che esegue il processo, dovrebbe essere un utente con privilegi bassi
'group' => '', // Gruppo utente che esegue il processo, dovrebbe essere un gruppo utente con privilegi bassi
'reusePort' => false, // Attivare reusePort, dopo l'attivazione le connessioni verranno distribuite in modo uniforme ai diversi processi worker
'eventLoop' => '', // Classe del ciclo di eventi, utilizza automaticamente la configurazione server.event_loop se vuota
'context' => [], // Configurazione del contesto di ascolto, ad esempio ssl
'constructor' => [ // Parametri del costruttore della classe di gestione del processo, in questo esempio sono i parametri del costruttore della classe Http
'requestClass' => Request::class, // Classe di richiesta personalizzabile
'logger' => Log::channel('default'), // Istanza di log
'appPath' => app_path(), // Posizione della directory app
'publicPath' => public_path() // Posizione della directory pubblica
]
],
// Processo di monitoraggio, utilizzato per rilevare aggiornamenti ai file e ricaricare automaticamente e problemi di memoria
'monitor' => [
'handler' => app\process\Monitor::class, // Classe di gestione
'reloadable' => false, // Il processo attuale non esegue reload
'constructor' => [ // Parametri del costruttore della classe di gestione del processo
// Directory da monitorare, non esagerare, altrimenti il controllo diventa lento
'monitorDir' => array_merge([
app_path(),
config_path(),
base_path() . '/process',
base_path() . '/support',
base_path() . '/resource',
base_path() . '/.env',
], glob(base_path() . '/plugin/*/app'), glob(base_path() . '/plugin/*/config'), glob(base_path() . '/plugin/*/api')),
// Monitorare gli aggiornamenti a questi file di estensione
'monitorExtensions' => [
'php', 'html', 'htm', 'env'
],
// Altre opzioni
'options' => [
// Attivare il monitoraggio dei file, valido solo su linux, per impostazione predefinita il processo in modalità demone non attiva il monitoraggio dei file
'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
// Attivare il monitoraggio della memoria, supportato solo su linux
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
]
]
]
];
container.php
// Restituisce un'istanza del contenitore di iniezione delle dipendenze psr-11
return new Webman\Container;
dependence.php
// Utilizzato per configurare i servizi e le dipendenze nel contenitore di iniezione delle dipendenze
return [];
route.php
use support\Route;
// Definire la rotta per il percorso /test
Route::any('/test', function (Request $request) {
return response('test');
});
view.php
use support\view\Raw;
use support\view\Twig;
use support\view\Blade;
use support\view\ThinkPHP;
return [
'handler' => Raw::class // Classe di gestione della vista predefinita
];
autoload.php
// Configurazione dei file da caricare automaticamente dal framework
return [
'files' => [
base_path() . '/app/functions.php',
base_path() . '/support/Request.php',
base_path() . '/support/Response.php',
]
];
cache.php
// Configurazione della cache
return [
'default' => 'file', // File predefinito
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache') // Posizione di archiviazione dei file di cache
],
'redis' => [
'driver' => 'redis',
'connection' => 'default' // Nome della connessione redis, corrisponde alla configurazione in redis.php
],
'array' => [
'driver' => 'array' // Cache in memoria, scade dopo il riavvio
]
]
];
redis.php
return [
'default' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
],
];
database.php
return [
// Database predefinito
'default' => 'mysql',
// Configurazioni per vari database
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'unix_socket' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'sqlite' => [
'driver' => 'sqlite',
'database' => '',
'prefix' => '',
],
'pgsql' => [
'driver' => 'pgsql',
'host' => '127.0.0.1',
'port' => 5432,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => 'localhost',
'port' => 1433,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
],
],
];
exception.php
return [
// Imposta la classe di gestione delle eccezioni
'' => support\exception\Handler::class,
];
log.php
return [
'default' => [
'handlers' => [
[
'class' => Monolog\Handler\RotatingFileHandler::class, // Gestore
'constructor' => [
runtime_path() . '/logs/webman.log', // Nome del log
7, //$maxFiles // Conservarlo per 7 giorni
Monolog\Logger::DEBUG, // Livello di log
],
'formatter' => [
'class' => Monolog\Formatter\LineFormatter::class, // Formattatore
'constructor' => [null, 'Y-m-d H:i:s', true], // Parametri di formattazione
],
]
],
],
];
session.php
return [
// Tipo
'type' => 'file', // o redis o redis_cluster
// Gestore
'handler' => FileSessionHandler::class,
// Configurazione
'config' => [
'file' => [
'save_path' => runtime_path() . '/sessions', // Directory di archiviazione
],
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'auth' => '',
'timeout' => 2,
'database' => '',
'prefix' => 'redis_session_',
],
'redis_cluster' => [
'host' => ['127.0.0.1:7000', '127.0.0.1:7001', '127.0.0.1:7001'],
'timeout' => 2,
'auth' => '',
'prefix' => 'redis_session_',
]
],
'session_name' => 'PHPSID', // Nome della sessione
'auto_update_timestamp' => false, // Aggiornare automaticamente il timestamp, per evitare che la sessione scada
'lifetime' => 7*24*60*60, // Durata della vita
'cookie_lifetime' => 365*24*60*60, // Durata della vita del cookie
'cookie_path' => '/', // Percorso del cookie
'domain' => '', // Dominio del cookie
'http_only' => true, // Accesso solo http
'secure' => false, // Accesso solo https
'same_site' => '', // Attributo SameSite
'gc_probability' => [1, 1000], // Probabilità di recupero della sessione
];
middleware.php
// Imposta i middleware
return [];
static.php
return [
'enable' => true, // Attivare l'accesso ai file statici di webman
'middleware' => [ // Middleware per i file statici, utilizzabile per impostare strategie di caching, CORS, ecc.
//app\middleware\StaticFile::class,
],
];
translation.php
return [
// Lingua predefinita
'locale' => 'zh_CN',
// Lingua di fallback
'fallback_locale' => ['zh_CN', 'en'],
// Posizione di archiviazione dei file di lingua
'path' => base_path() . '/resource/translations',
];