Tutoriel d'utilisation de Yaconf pour PHP7
Ce projet n'est en fait pas une idée nouvelle. Il s'agit d'un petit outil que j'ai créé dans mon premier projet d'optimisation après mon arrivée sur Weibo. Mais comme Weibo_Conf est une extension Weibo, il existe d'autres fonctions spécialement personnalisées. pour Weibo, ils ne conviennent donc pas à l'open source direct
Avec la sortie de PHP7, de nombreux nouveaux types de persistance ont été ajoutés, comme IS_IMMUTABLE_ARRAY, j'ai donc redéveloppé Yaconf sous PHP7, open source pour tout le monde. utiliser.
Introduction
Tout d'abord, parlons de ce que cela fait.
J'ai vu de nombreux projets, utilisant des fichiers PHP pour la configuration, il peut y avoir une douzaine, voire des dizaines de fichiers de configuration .php dans un répertoire de configuration, qui contiennent divers tableaux, et même certains fichiers de dictionnaire (tels que chinois/anglais (Contrôle) sont également placés dans la configuration. Cela provoque l'analyse du fichier de configuration pour consommer beaucoup de performances (certes, utiliser opcache peut être mieux, mais en fait il y a quand même un processus d'exécution
En plus de PHP, il y a aussi ceux qui utilisent json et yaml). est que la lisibilité de ces configurations est relativement mauvaise. De plus, elles nécessitent également une analyse d'exécution
Le répertoire de configuration est souvent accompagné du code. Premièrement, il y aura des risques de sécurité (il contient souvent des informations sensibles). la configuration). Deuxièmement, si la configuration et le code appartiennent au même projet, cela entraînera que la modification de la configuration passe par le processus de code en ligne.
Certains fichiers de configuration de ressources, tels que mysql/memcache Informations de configuration, ce contenu doit être transparent pour le développement, et l'exploitation et la maintenance doivent être directement responsables. Cependant, si elles sont insérées dans le code, si l'exploitation et la maintenance veulent initier des changements, le développement et la coopération doivent être modifiés pour modifier la configuration. fichier et allez en ligne.
Ainsi, Yaconf est un outil créé pour résoudre ces problèmes
Il utilise un répertoire de configuration séparé (spécifié dans yaconf.directory), et non avec le code.
Il gère toutes les configurations à traiter au démarrage de PHP, puis ces configurations résideront en mémoire et vivront et mourront avec le cycle de vie de PHP. Cela évite d'analyser le fichier de configuration à chaque fois qu'il est demandé. >
Tous les contenus de configuration sont tous immuables, ce qui peut réduire l'utilisation de la mémoire à l'aide de Fork's COW. Lors de l'accès à la configuration, il n'y a presque pas besoin de copie de mémoire, et il n'y aura pas d'augmentation ou de diminution inutile du contenu. nombre de référencesLa chose la plus importante est qu'une fois le répertoire de configuration et le code séparés, un arrière-plan de gestion de configuration peut être utilisé pour obtenir une gestion unifiée de la configuration.Il prend en charge (pour les non- ZTS) rechargement des changements de configuration, c'est-à-dire configuration S'il y a des changements (il est recommandé d'utiliser mv au lieu de cp pour changer la configuration), il se rechargera sans redémarrer (la fréquence de détection est contrôlée par yaconf.check_delayIl prend en charge une variété de types de configuration, notamment les chaînes, les tableaux, les sections, l'héritage de section, et vous pouvez également écrire des constantes PHP et des variables d'environnement directement dans la configuration
La chose la plus importante est, c'est très simple.
APIYaconf ne propose que deux méthodes,
mixed Yaconf::get(string $name, mixed $default = NULL)
C'est pour obtenir une configuration, le nom est le nom de la configuration, d'une manière générale, si vous avez un fichier ini appelé foo.ini , alors si $name utilise foo, il obtiendra tout le contenu de ce fichier et le renverra sous la forme d'un tableau par défaut est la valeur par défaut renvoyée lorsque. la configuration n'existe pas.
bool Yaconf::has(string $name)
Ceci permet de détecter si une configuration existe.
Éléments de configuration Yaconfyaconf.directory
yaconf.check_delay
À quelle fréquence (en secondes) détecter les modifications de fichier S'il est 0, il ne sera pas détecté. il est 0, les modifications de fichiers ne peuvent être rechargées qu'en redémarrant PHP
Format configuréYaconf utilise les fichiers ini comme fichiers de configuration. ini est le plus approprié pour les fichiers de configuration. Il est au format clé-valeur et est clair et lisible
Écriture de configuration simple Cela ressemble à ceci (tout ce qui suit suppose que le nom du fichier ini est test). :
foo="bar" phpversion=PHP_VERSION env=${HOME}
Comme indiqué ci-dessus, nous utilisons des guillemets pour les configurations générales. Pour celles qui ne sont pas citées, nous allons essayer d'utiliser des constantes PHP Explication, c'est-à-dire que nous pouvons écrire des constantes PHP directement dans le fichier. configuration.
De plus, vous pouvez également voir que nous pouvons écrire des variables d'environnement directement dans la configuration, comme le ci-dessus env:
Yaconf::get("test.env"); //test是配置文件名字 //string(16) "/home/huixinchen"
Comme indiqué ci-dessus, vous pouvez voir qu'en supposant que le la valeur de foo est accessible via le code suivant :
Yaconf::get("test.foo"); //test是配置文件名字
Yaconf prend également en charge la configuration de type tableau, qui s'écrit comme suit :
arr.0=1 arr.1=2
Si c'est le cas pour un tableau continu, vous pouvez également écrire directement :
arr[]=1 arr[]=2
Ensuite pour la valeur du tableau, vous pouvez l'obtenir via le code suivant :
Yaconf::get("test.arr");
Cela obtiendra le tableau arr dans le fichier de configuration de test Bien sûr. Vous pouvez également. obtenir directement une valeur spécifique dans le tableau. Par exemple, si vous souhaitez obtenir directement le 0ème élément du tableau arr dans le fichier de configuration de test :
$arr = Yaconf::get("test.arr.0");
Yaconf prend également en charge la configuration du type map, qui s'écrit comme suit :
map.foo=bar map.bar=foo
; Vous pouvez utiliser des points-virgules pour écrire des commentaires
map2.foo.name=yaconf map2.foo.year=2015
La valeur du nom de la sous-carte foo de map2 est accessible sous la forme suivante :
Yaconf::get("test.map2.foo.name"); //test是配置文件名字
De plus, le Le fichier de configuration peut également être divisé en section et héritage de section :
[parent] parent="base" children="NULL" [children : parent] children="children"
Veuillez noter la syntaxe d'héritage de la section de configuration children : (deux-points) parent, ce qui signifie que la section enfants hérite de tous les éléments de configuration de base. Ensuite, vous la définissez. dans la section enfants La configuration du même nom que dans la section parent écrasera le contenu défini dans le parent
La valeur de la configuration enfants dans la section enfants est accessible sous la forme suivante : <🎜. >
Yaconf::get("test.children.children"); //test是配置文件名字
样例
首先, 假设我们的所有的配置文件都放置在/tmp/yaconf中, 那么我们就需要在php.ini中增加如下配置:
yaconf.directory=/tmp/yaconf
这样yaconf在PHP启动的时候, 就会在这个目录下找所有的*.ini文件, 然后尝试处理他们. 这里要注意的是不支持多级目录, 也就是说, yaconf只会处理yaconf.directory内的*.ini文件, 不会处理子目录里面的(这主要是为了简单考虑, 因为有分节, 你就可以一个项目定义一个ini文件).
假设/tmp/yaconf下有俩个ini文件, 分别是:
foo.ini
name="yaconf" year=2015 features[]="fast" features.1="light" features.plus="zero-copy" features.constant=PHP_VERSION bar.ini
[base]
parent="yaconf" children="NULL" [children:base] children="set"
然后对于foo的内容:
php7 -r 'var_dump(Yaconf::get("foo"));' /* array(3) { ["name"]=> string(6) "yaconf" ["year"]=> string(4) "2015" ["features"]=> array(4) { [0]=> string(4) "fast" [1]=> string(5) "light" ["plus"]=> string(9) "zero-copy" ["constant"]=> string(9) "7.0.0-dev" } } */
对于bar的内容:
php7 -r 'var_dump(Yaconf::get("bar"));' /* array(2) { ["base"]=> array(2) { ["parent"]=> string(6) "yaconf" ["children"]=> string(4) "NULL" } ["children"]=> array(2) { ["parent"]=> string(6) "yaconf" ["children"]=> string(3) "set" } } */
当然你可以用 (.)链接语法精确访问任何一个特定的值.
最后
我的Ya系列扩展从此又多了一个新成员, 算上之前的Yaf(PHP框架), Yar(PHP RPC框架), Yac(PHP单机缓存), 大家就可以很容易搭建一套高性能的LAMP应用解决方案出来.
注: Yaconf要求PHP7才能用
推荐教程:《PHP7》
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
