Maison  >  Article  >  développement back-end  >  Méthode de réglage du fuseau horaire Lumen timezone

Méthode de réglage du fuseau horaire Lumen timezone

jacklove
jackloveoriginal
2018-06-29 17:45:381715parcourir

Lorsque j'ai utilisé le framework Lumen pour écrire du code aujourd'hui, c'était aussi la première fois que j'expérimentais Lumen, j'ai rencontré un problème. L'heure trouvée dans la base de données était 8 heures plus lente que l'heure TIMESTAMP enregistrée dans la base de données. est un problème de réglage du fuseau horaire, je pensais qu'il pouvait être résolu en 1 minute, mais je me suis trompé

D'après l'expérience de Laravel 4.x et 5.0, il vous suffit de définir le paramètre 'timezone'. à 'PRC' dans config/app.php Très bien, recherchez le répertoire de configuration de Lumen, sous le chemin /vendor/laravel/lumen-framework/config, mais il n'y a pas d'option de paramètre de fuseau horaire dans les options de paramètre de config/app.php, et il n'est pas valide même s'il est ajouté manuellement.

Ensuite, j'ai pensé au fichier .env de Laravel 5 et j'ai découvert qu'il n'y avait aucune option pour les paramètres de fuseau horaire dans le fichier .env de Lumen.

Retournez dans le répertoire config et regardez les paramètres dans config/database.php La configuration par défaut pour mysql est la suivante :

'mysql' => [
 'driver'  => 'mysql',
 'host'   => env('DB_HOST', 'localhost'),
 'port'   => env('DB_PORT', 3306),
 'database' => env('DB_DATABASE', 'forge'),
 'username' => env('DB_USERNAME', 'forge'),
 'password' => env('DB_PASSWORD', ''),
 'charset'  => 'utf8',
 'collation' => 'utf8_unicode_ci',
 'prefix'  => env('DB_PREFIX', ''),
 'timezone' => env('DB_TIMEZONE','+00:00'),
 'strict'  => false,
],

Il existe ici un paramètre de fuseau horaire de base de données. La valeur par défaut est +00:00, qui est l'heure UTC. Le changer en +08:00 résout le problème. Depuis que le projet a activé le fichier de configuration .env, une ligne

DB_TIMEZONE=+08:00

a finalement été ajoutée au fichier .env pour résoudre le problème de fuseau horaire de la base de données.

Bien que le problème de fuseau horaire de la base de données ait été résolu, le problème de fuseau horaire de l'application n'a pas été résolu. J'ai recherché le projet Lumen globalement et j'ai trouvé l'endroit où le fuseau horaire est utilisé. lumen timezone partie dans le fichier

/vendor/laravel/lumen-framework/src/Application.php

/**
* Create a new Lumen application instance.
*
* @param string|null $basePath
* @return void
*/
public function __construct($basePath = null)
{
 date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));
 $this->basePath = $basePath;
 $this->bootstrapContainer();
 $this->registerErrorHandling();
}

Le paramètre .env utilisé dans le code est APP_TIMEZONE et la valeur est UTC. PRC ici, ou ajoutez

APP_TIMEZONE=PRCLe problème de réglage du fuseau horaire de lumen php est résolu.

Résumé des paramètres de fuseau horaire de Lumen

Modifier le fichier .env pour ajouter la configuration

APP_TIMEZONE=PRC
DB_TIMEZONE=+08:00

Si le fichier de configuration .env n'est pas activé, modifiez

/vendor/laravel/lumen-framework/config/database.php
/vendor/laravel/lumen-framework/src/Application.php

pour modifier respectivement les valeurs des paramètres APP_TIMEZONE et DB_TIMEZONE.

Activer le fichier de configuration .env

Renommer le fichier .env.example dans le répertoire racine de Lumen en .env, modifier /bootstrap/app.php et annuler comme suit les commentaires sur la ligne de code

Dotenv::load(__DIR__.'/../');


Supplément :

Parce que lumen utilise l'heure de Greenwich par défaut, il doit être converti à l’heure de Pékin.

Ajoutez


APP_TIMEZONE=PRC à .env

DB_TIMEZONE=+08:00


Ensuite, l'heure sera correcte

Recommandations associées :

Explication de la méthode d'implémentation simple de la sortie en temps réel de php nginx


Explication détaillée des spécifications de syntaxe des commentaires PHP et des spécifications de dénomination


Commentaires en langage PHP, commentaires sur une seule ligne et commentaires sur plusieurs lignes


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn