recherche
Maisondéveloppement back-endtutoriel phpComment optimiser votre base de données

Comment optimiser votre base de données

Nov 09, 2017 pm 03:03 PM
优化如何数据库

La raison pour laquelle la base de données fonctionne trop lentement

Le premier point est que le matériel est trop ancien

Pour le matériel, nous principalement Concentrez-vous sur le processeur, la mémoire, parlons des trois aspects des disques. Il existe également certains facteurs tels que les cartes réseau, les réseaux de salle informatique, etc. En raison de la longueur de l'article, je ne les présenterai pas un par un. être des occasions d'en parler à l'avenir.

Tout d'abord, examinons les caractéristiques d'utilisation du processeur de MySQL :

5.1 peut utiliser 4 cœurs, 5.5 peut utiliser 24 cœurs et 5.6 peut utiliser 64 cœurs

Par exemple , MySQL5.6 peut utiliser plus de 48 CORE, et s'il fonctionne bien, il peut utiliser 64 CORE (entre 48CORE-64CORE, l'annonce officielle est 48 CORE, et dans mon test actuel, il peut atteindre 64 CORE).

MySQL 5.6 peut utiliser 48 cœurs+

MySQL 5.1 peut utiliser jusqu'à 4 cœurs auparavant

Maintenant, les serveurs de l'environnement de production général sont de 32 CORE ou plus.

Je recommande donc à tout le monde d'essayer d'utiliser MySQL5.5 ou MySQL5.6, à moins que le serveur de votre entreprise n'utilise un très ancien serveur avec seulement 4 cœurs ou 1 cœur.

Parce qu'avant la version 5.1 (la même que la version 5.0), elle était codée en dur dans le code interne et était basée sur le moteur de stockage innobase, la base de données avait donc une mauvaise utilisation du matériel. Après avoir évolué vers le moteur InnoDB, il est devenu bien meilleur.

Chaque connexion est un thread (pas un pool de threads), et chaque requête ne peut utiliser qu'un seul cœur

De plus, dans MySQL, chaque requête ne peut utiliser qu'un seul processeur.

Oracle utilise du SQL parallèle et des requêtes parallèles. Ce type de fonction n'existe pas dans MySQL.

Pas de cache de plan d'exécution (pas de précompilation du plan d'exécution SQL)

Deuxièmement, il n'y a pas de précompilation SQL dans MySQL. Par conséquent, il n’existe pas de structure comparable au cache de bibliothèque dans la structure de mémoire d’Oracle. Par conséquent, MySQL n'a qu'une analyse dure, il n'y a pas d'analyse douce, encore moins d'analyse douce.

MySQL connaîtra une dégradation des performances à mesure que le nombre de connexions augmente

C'est aussi une faille de MySQL, mais avec l'évolution des versions de MySQL, de nombreuses solutions ont vu le jour.

Par exemple : le pool de threads (TP) officiellement lancé. Il s'agit de résoudre le problème du nombre trop élevé de connexions simultanées, mais il s'agit d'un composant supplémentaire de MySQL, et le TP officiel nécessite de l'argent supplémentaire pour l'acheter.

De plus, il y a une personne en Chine nommée Lou Fangxin qui a développé un middleware OneSQL pour résoudre des problèmes similaires.

Il existe un cache de résultats, mais il est inutile

MySQL a également un cache de résultats similaire à celui d'Oracle, appelé Query Cache, mais c'est une fonction relativement inutile et rarement utilisée.

Étant donné que la plupart des environnements de production actuels sont des systèmes OLTP, les opérations de mise à jour et de modification sont fréquentes. Ce cache de requêtes est utilisé dans un environnement où les données sont fréquemment mises à jour et modifiées, ce qui dégradera sérieusement les performances de MySQL. Il est donc généralement très à utiliser avec parcimonie.

Maintenant que j'utilise MySQL, j'utilise essentiellement le moteur de stockage InnoDB. Les moteurs MyISAM précédents sont rarement utilisés. (Qu'est-ce qu'un moteur de stockage ? Si vous ne le savez pas, vous pouvez gg)

Il n'est pas nécessaire d'activer ce cache de requêtes dans le moteur InnoDB, car c'est un moteur de stockage transactionnel, et il est utilisé lors de l'utilisation d'InnoDB. Avec des capacités de traitement de transactions élevées, des mises à jour et des modifications fréquentes des données se produiront certainement.

Regardons à nouveau les caractéristiques d'utilisation de la mémoire de MySQL

Le serveur avec un système d'exploitation 64 bits peut utiliser la mémoire ((2^64-1)/1024/1024/1024)G

Dans un environnement simultané à grande vitesse, la mise en cache de la mémoire est essentiellement utilisée pour réduire l'impact des E/S sur le disque

Habituellement, la mémoire est planifiée en fonction de 15 à 20 % des données réelles. les données sont particulièrement chaudes, une plus grande proportion doit être prise en compte. Pour mettre les données en cache

Ces 15% à 20% de données sont généralement appelées données chaudes. (C'est aussi une valeur d'expérience courante)

Par exemple, si vous estimez que le volume total de données de votre MySQL est d'environ 500 Go, alors la mémoire que MySQL fournira peut être de 75 Go (500*0,15), alors vous pouvez Un serveur avec environ 128 Go de mémoire est requis.

De plus, certaines entreprises disposeront de quantités de données particulièrement chaudes et importantes (il est possible de dépasser largement la fourchette de 15 à 20 %), comme QQ Farm.

Je crois que tout le monde a déjà joué à des jeux de vol de nourriture, comme QQ Farm, Happy Farm et autres. (Il existe également un site Internet 12306 pour réserver des billets).

Ce type d'entreprise est très préoccupant dans notre secteur. Les caractéristiques de ce type d'entreprise sont que lorsque les données sont chaudes, il s'agit essentiellement de données chaudes à 100 %. Par exemple : lorsque tout le monde joue sur QQ. Ferme, ils viennent ici pour jouer tous les jours, et ils viennent de temps en temps pour voler de la nourriture. Beaucoup de gens se lèvent au milieu de la nuit et volent de la nourriture lorsqu'ils vont aux toilettes.

La configuration mémoire de la base de données MySQL pour ce type d'entreprise doit donc être augmentée. 15 à 20 % ne suffisent pas.

Résumé : 15 à 20 % des activités générales sont utilisées pour planifier des données chaudes, telles que le centre utilisateur, les commandes et d'autres activités courantes. Pour certaines autres entreprises particulières, la situation spécifique doit être analysée en détail.

L'allocation de guidage peut être effectuée en fonction du temps de réponse aux requêtes

Lorsque nous réalisons ce type d'architecture en ligne à grande échelle - planification et conception de grandes bases de données,

Le temps de réponse des requêtes SQL est également un indicateur très important.

Dans un système aussi vaste, il doit transporter des millions, voire des dizaines de millions d'utilisateurs pour faire des affaires en ligne en même temps. Le temps de réponse des requêtes SQL (requête) doit être strictement contrôlé et votre système doit être strictement contrôlé. Le temps de réponse aux requêtes est contrôlé dans le délai imparti.

Par exemple, pour notre bibliothèque principale, j'exige que le temps de réponse de la requête (réponse moyenne) soit inférieur à 30 ms. S'il dépasse 30 ms, nous pensons que la base de données a peut-être atteint la limite de charge et qu'elle doit être étendue.

De plus, un suivi des indicateurs à long terme de ce temps de réponse aux requêtes est nécessaire.

Il s'agit de la bibliothèque principale. S'il existe d'autres bibliothèques auxiliaires moins importantes, telles que les bibliothèques de journalisation, ou certaines bibliothèques dont les exigences de performances ne sont pas trop élevées, nous pouvons assouplir le temps de réponse des requêtes à moins de 1 seconde ou 2. secondes.

Déterminez le seuil de ce temps de réponse aux requêtes en fonction de l'importance de l'entreprise.

Il s'agit d'un principe directeur très important : planifiez votre capacité de performance en fonction du temps de réponse aux requêtes.

Il existe deux types de capacité : la capacité de performance et la capacité spatiale. La capacité spatiale est très simple, c'est-à-dire combien de données SIZE sont placées et combien de T.

La capacité de performance est plus importante et détermine si elle peut gérer la pression et la charge de votre entreprise.

Tout le monde doit se rappeler : si l'entreprise avec laquelle vous souhaitez traiter compte des millions d'utilisateurs actifs, et non des centaines d'utilisateurs, la performance est reine et répondre aux besoins de l'entreprise est la chose la plus importante.

Peu importe à quel point vos fonctions sont géniales, quelle que soit la qualité de votre produit, les performances sont inégalées et tout le reste est absurde. Des centaines de personnes peuvent faire tomber l'ensemble de votre système et de votre projet en quelques secondes, et alors vous les gars, l'entreprise a été aveuglée.

Les utilisateurs qui ont travaillé si dur seront également perdus en grand nombre, et les pertes seront lourdes.

La performance est la base. L’architecture dans son ensemble n’a de sens que si les performances peuvent y résister. Si les performances ne sont pas satisfaisantes, il sera inutile d’envisager ultérieurement la haute disponibilité.

Caractéristiques d'utilisation du disque de MySQL

Binlog, redo log, annulation du journal des E/S séquentielles

MySQL a différents types d'E/S.

binlog, redolog, undolog, ce sont toutes des écritures d'E/S séquentielles.

Il n'est pas vraiment nécessaire de mettre ce genre de choses sur un SSD. L'écriture séquentielle sur des disques mécaniques traditionnels est également très rapide. Le mettre sur un SSD est un peu inutile. De plus, le SSD présente des problèmes de perte d'écriture et d'écriture. vie. Il doit être placé sur SSD. Le mettre sur un disque SAS traditionnel suffit. Il n'est pas nécessaire de mettre un SSD.

SSD est utilisé pour stocker des fichiers de données. Étant donné que la plupart des E/S qui se produisent sur le fichier de données sont des E/S aléatoires, il est très avantageux pour le SSD d'exécuter des E/S aléatoires. Le disque SSD SSD + le disque SAS traditionnel sont mélangés pour le stockage. De plus, n'utilisez pas de SSD pour les disques de sauvegarde.

Les E/S aléatoires des fichiers de données et les E/S séquentielles combinées

Les E/S séquentielles sont toujours plus rapides. Dans la conception de bases de données, ce qui détermine si vous êtes un administrateur de base de données génial ou un architecte génial dépend de votre capacité à concevoir une entreprise avec des E/S séquentielles autant que possible tout en réduisant les E/S aléatoires. Par exemple : lors de la conception d'une entreprise de relations amicales, j'espère qu'une requête pourra supprimer la relation amicale via des IO séquentielles. Alors, comment la concevoir ?

Dans InnoDB de MySQL, nous pouvons profiter d'une fonctionnalité d'InnoDB : les tables d'index clusterisées. (Similaire à l'IOT d'Oracle).

Grâce à cette fonctionnalité, les données des amis de l'utilisateur peuvent être rassemblées autant que possible sur une seule page ou sur plusieurs pages adjacentes. Lors de la lecture, une lecture séquentielle IO peut être effectuée et les performances sont grandement améliorées.

La structure de la table des relations amicales est la suivante (la table des prémisses est le moteur InnoDB) :

owner_idfriend_id (id de l'ami)

Les deux champs ci-dessus sont utilisés en tant que clé primaire, la clé primaire d'InnoDB C'est un index clusterisé, donc la lecture de ces deux champs doit se faire avec des E/S séquentielles.

Dans le passé, certains livres de conception de bases de données mentionnaient toujours que chaque table devait ajouter une spécification pour une clé primaire auto-incrémentée. En fait, la spécification est morte, mais la réponse est vivante. un exemple ci-dessus est : Au lieu d'utiliser une clé primaire auto-incrémentée, deux champs métier qui ont des attributs métier et sont fréquemment lus sont utilisés comme clés primaires, ce qui entraîne de meilleures performances.

Par conséquent, lorsque vous étudiez, ne mémorisez pas les normes et réglementations de ces livres, mais vous devez vraiment comprendre les principes de quelque chose, comme bien apprendre les principes internes d'InnoDB, puis dans le travail réel. , vous pouvez utiliser les principes Support et utiliser des principes pour tirer des conclusions.

Les principes d'InnoDB constituent un énorme morceau de connaissances et nécessitent un apprentissage au fil du temps. Vous pouvez prêter plus d'attention à mon compte officiel, et certains articles sur InnoDB seront publiés les uns après les autres.

L'activité OLTP nécessite plus d'E/S aléatoires

Vous pouvez utiliser la mémoire pour la mise en cache, réduisant ainsi les E/S aléatoires

L'activité OLAP nécessite plus d'E/S séquentielles

mémoire Le cache est de peu d'utilité

Avant MySQL 5.6, la modification de page n'était pas prise en charge et la valeur par défaut était de 16 Ko.

MySQL5.6 peut être modifié après MySQL5.6. Ce paramètre est innodb_page_size, mais MySQL5.6 ne peut être modifié qu'en 8K ou 4K et ne peut pas être augmenté en 32K ou 64K avant MySQL5. 7 ou plus.

Pour les systèmes OLAP, des pages plus grandes contribueront à améliorer les performances, car les systèmes OLAP ont des requêtes relativement volumineuses et analysent beaucoup de données.

Deuxième point : La conception de la base de données n'est pas bonne

Par exemple, de nombreuses fonctionnalités de la base de données sont utilisées, telles que des déclencheurs, des partitions, de nombreuses procédures stockées, des fonctions, etc. .

On dit souvent que petit est beau, ce qui signifie que la simplicité est ce qu'il y a de mieux. Si vous utilisez toutes les fonctions de la base de données, les performances de la base de données seront naturellement ralenties et les risques d'éventuels bugs et échecs sous-jacents augmenteront.

Tout le monde doit donc comprendre qu'une bonne conception de projet de base de données est petite, belle, légère et simple. De plus, la base de données ne constitue qu'une partie du projet global. Des éléments tels que Trigger et les procédures stockées peuvent certainement être implémentés à l'aide du code d'application dans le projet global.

Ainsi, lorsque nous utilisons MySQL, nous utilisons simplement ses fonctionnalités puissantes, telles que les tables, les index, les transactions, etc., plutôt que d'avoir à utiliser toutes ses fonctions.

Un autre point est qu'avant MySQL 5.6, les sous-requêtes n'étaient pas autorisées dans la base de données principale de l'environnement de production.

Les performances des sous-requêtes avant MySQL 5.6 étaient particulièrement médiocres. (La syntaxe est prise en charge, mais les performances SQL sont très médiocres).

Par exemple, si vous utilisez Oracle maintenant et souhaitez migrer Oracle vers MySQL, il est recommandé d'utiliser la version MySQL5.6. MySQL5.6 a apporté de grandes améliorations en termes de prise en charge et de performances des sous-requêtes.

Les performances de la sous-requête MySQL 5.6 seront grandement améliorées.

Le troisième point : l'écriture de programmes est terrible

Je pense que les étudiants qui ont été DBA auraient dû vivre cela dans les petites et moyennes entreprises, au niveau des programmeurs. varie ensemble.

Surtout lorsque vous rencontrez de nombreux programmeurs qui viennent d'entrer dans l'industrie (fraîches diplômés), il est plus probable que ces programmeurs qui viennent d'entrer dans l'industrie répondront également à des besoins très urgents. Il est difficile d’imaginer un programme développé dans ce genre d’environnement.

Bien sûr, ce n’est pas la faute de nos programmeurs, nous ne pouvons pas leur en vouloir.

La principale raison de mon phénomène mentionné ci-dessus est l'environnement de développement national. Il n'y a aucun moyen. Les besoins de développement sont urgents (les produits sont activés tous les jours) et les programmeurs sont occupés à se précipiter au travail (à long terme). heures supplémentaires). Ils ne peuvent être occupés qu'à mettre en œuvre des programmes commerciaux, ils n'ont pas le temps d'optimiser le programme.

Bien sûr, dans cet environnement, c'est une opportunité pour nous les DBA. Le mauvais SQL et le SQL complexe écrit par les programmeurs ont provoqué un ralentissement, voire un crash du système. Ensuite, notre administrateur de base de données est intervenu pour optimiser et transformer ces mauvais SQL et ce SQL lent, et le système est revenu à la normale et est devenu de plus en plus stable. C’est aussi quelque chose de très enrichissant et qui sera respecté par les collègues et les dirigeants.

Dans le même temps, les administrateurs de base de données peuvent également renforcer la formation des programmeurs afin d'améliorer leur capacité à écrire rapidement du bon SQL. Laissez-les passer moins de temps et écrire des instructions SQL avec de meilleures performances et des performances plus fluides. De cette manière, cela peut également réduire la charge pesant sur le DBA.

Personnellement, je préfère parler de formation aux programmeurs. Premièrement, tout le monde peut gagner quelque chose en échangeant de la technologie. Deuxièmement, cela peut construire une bonne relation et faciliter la discussion sur toutes les questions au travail qui doivent être négociées. à l'avenir. C'est mieux que de leur offrir un repas.

Nous avons principalement les solutions suivantes pour les programmes mal écrits :

Pour que les applications utilisent des pools de connexions à des bases de données, en particulier dans les applications à grande échelle et à haute concurrence développées sur la base de JAVA, il faut utiliser la connexion mise en commun.

L'avantage d'utiliser un pool de connexions est qu'il permet de limiter le nombre de connexions pour l'application. De plus, il n'est pas nécessaire de créer chaque connexion supplémentaire. Le coût de création d'une connexion pour MySQL est également important. , car créer une nouvelle connexion équivaut à MySQL. Un thread est créé.

Je viens également de mentionner que MySQL connaîtra une dégradation des performances à mesure que le nombre de connexions augmente.

Les étudiants qui ont écrit du code de programme doivent également savoir que sur notre ordinateur portable ordinaire (généralement 4CORE), vous créez 400 threads, et chaque thread fait 1+1+1+1+. Tâche simple, dormez à nouveau. et voyez si votre PC est bloqué ou non. Vous constaterez que le processeur de votre PC est presque plein. Si vous osez créer 600 threads, alors votre machine redémarrera bientôt. En effet, le processeur est entièrement occupé en raison de la surcharge des threads.

Instructions SQL complexes

Comme je l'ai dit tout à l'heure, le SQL écrit par les programmeurs a généralement de nombreux problèmes. Après tout, ils sont trop occupés pour considérer les performances et le fonctionnement de ce SQL. Dans certains cas, le SQL épissé par le programmeur peut directement faire tomber l'ensemble du système.

Laissez-moi vous donner un exemple simple : une de nos applications crée 10 connexions à la base de données (nombre maximum de connexions = 10) Chacune de ces 10 connexions exécute le même SQL complexe en même temps et l'exécute. SQL complexe. Cela prendra au moins 10 minutes. Ensuite, ces 10 connexions ne pourront exécuter ce SQL complexe que dans un délai de 10 minutes, et tous les autres SQL suivants seront bloqués.

Rendre la plupart des applications indisponibles pendant 10 minutes, n'est-ce pas ? Et cela pourrait provoquer une avalanche et provoquer l’effondrement du système.

L'optimisation du SQL complexe est également un travail très important pour les DBA. Il est nécessaire de découvrir ces SQL complexes, ces SQL lents et ces mauvais SQL grâce à des méthodes de surveillance, puis de donner des suggestions d'optimisation aux programmeurs (besoins du DBA). pour effectuer des tests de comparaison de performances), permettant aux programmeurs de modifier le code, afin que le système puisse réellement fonctionner de manière fluide et en parallèle, comme une autoroute sans embouteillages.

Certaines personnes pourraient se demander, les programmeurs de notre entreprise ne sont que des méchants. Ils ne changeront pas le code SQL même s'ils meurent, ils ne l'optimiseront pas même s'ils meurent et ils ne peuvent pas communiquer. Alors que devons-nous faire ?

Nous avons encore du chemin. Nous pouvons également créer une bibliothèque esclave dédiée (Slave library) pour la gérer. Vous pouvez modifier la bibliothèque pour la requête.

Par exemple, en prenant notre entreprise comme exemple, notre système d'arrière-plan qui génère des rapports est connecté à la base de données esclave pour les requêtes, et ne se connecte pas à la base de données principale.

Logique invalide

Analyse complète de la table

Par exemple : update t set a = a + 1 J'ai oublié d'ajouter la condition Where.

Si vous souhaitez que votre système prenne en charge des millions d'utilisateurs en ligne, vous devez ajouter un système de révision SQL (SQL Review) pour éliminer le SQL avec une logique invalide et le SQL avec des analyses de table complètes.

SQL ne peut être publié en ligne qu'après avoir été examiné et approuvé par le DBA.

De plus, ce type de grande mise à jour SQL doit être mis à jour par lots, et la grande tâche SQL doit être divisée en petites tâches à exécuter. Dans MySQL, cela nécessite une attention particulière.

Pourquoi mettre à jour par lots ?

Raison 1. Comme mentionné ci-dessus, une requête MySQL ne peut utiliser qu'un seul CORE. Les transactions SQL sont trop volumineuses et complexes et prennent beaucoup de temps à s'exécuter, ce qui provoque facilement une congestion.

Raison 2. Dans l'environnement en ligne, MySQL a généralement une architecture Maître/Esclave Si une transaction de mise à jour importante de 1 million de lignes se produit dans le Maître, il est probable que l'ESCLAVE y reste bloqué, car. le SLAVE est une structure monothread, provoquant des retards de synchronisation.

MySQL écrit du SQL et crée de petites transactions SQL, qui sont rapidement exécutées et soumises rapidement. Laissez chaque requête se terminer plus rapidement et la connexion sera libérée plus rapidement.

Après l'optimisation basée sur le partage ci-dessus, votre base de données est-elle devenue plus rapide ?

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
Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Apr 17, 2025 am 12:25 AM

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

Comment PHP gère le clonage des objets (mot-clé de clone) et la méthode de magie __clone?Comment PHP gère le clonage des objets (mot-clé de clone) et la méthode de magie __clone?Apr 17, 2025 am 12:24 AM

Dans PHP, utilisez le mot-clé Clone pour créer une copie de l'objet et personnalisez le comportement de clonage via la méthode de magie du clone \ _ \ _. 1. Utilisez le mot-clé Clone pour faire une copie peu profonde, en clonant les propriétés de l'objet mais pas aux propriétés de l'objet. 2. La méthode du clone \ _ \ _ peut copier profondément les objets imbriqués pour éviter les problèmes de copie superficiels. 3. Faites attention pour éviter les références circulaires et les problèmes de performance dans le clonage et optimiser les opérations de clonage pour améliorer l'efficacité.

PHP vs Python: cas d'utilisation et applicationsPHP vs Python: cas d'utilisation et applicationsApr 17, 2025 am 12:23 AM

PHP convient aux systèmes de développement Web et de gestion de contenu, et Python convient aux scripts de science des données, d'apprentissage automatique et d'automatisation. 1.Php fonctionne bien dans la création de sites Web et d'applications rapides et évolutifs et est couramment utilisé dans CMS tel que WordPress. 2. Python a permis de manière remarquable dans les domaines de la science des données et de l'apprentissage automatique, avec des bibliothèques riches telles que Numpy et Tensorflow.

Décrivez différents en-têtes de mise en cache HTTP (par exemple, contrôle du cache, ETAG, dernier modifié).Décrivez différents en-têtes de mise en cache HTTP (par exemple, contrôle du cache, ETAG, dernier modifié).Apr 17, 2025 am 12:22 AM

Les acteurs clés des en-têtes de cache HTTP incluent le contrôle du cache, l'ETAG et la dernière modification. 1.CACHE-Control est utilisé pour contrôler les politiques de mise en cache. Exemple: Cache-Control: Max-Age = 3600, public. 2. Etag vérifie les changements de ressources par le biais d'identifiants uniques, exemple: ETAG: "686897696A7C876B7E". 3.Last-modifié indique le dernier temps de modification de la ressource, exemple: dernier modifié: mer, 21oct201507: 28: 00gmt.

Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1?Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1?Apr 17, 2025 am 12:06 AM

Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP: une introduction au langage des scripts côté serveurPHP: une introduction au langage des scripts côté serveurApr 16, 2025 am 12:18 AM

PHP est un langage de script côté serveur utilisé pour le développement Web dynamique et les applications côté serveur. 1.Php est un langage interprété qui ne nécessite pas de compilation et convient au développement rapide. 2. Le code PHP est intégré à HTML, ce qui facilite le développement de pages Web. 3. PHP traite la logique côté serveur, génère une sortie HTML et prend en charge l'interaction utilisateur et le traitement des données. 4. PHP peut interagir avec la base de données, traiter la soumission du formulaire et exécuter les tâches côté serveur.

PHP et le Web: explorer son impact à long termePHP et le Web: explorer son impact à long termeApr 16, 2025 am 12:17 AM

PHP a façonné le réseau au cours des dernières décennies et continuera de jouer un rôle important dans le développement Web. 1) PHP est originaire de 1994 et est devenu le premier choix pour les développeurs en raison de sa facilité d'utilisation et de son intégration transparente avec MySQL. 2) Ses fonctions principales incluent la génération de contenu dynamique et l'intégration à la base de données, ce qui permet au site Web d'être mis à jour en temps réel et affiché de manière personnalisée. 3) La large application et l'écosystème de PHP ont motivé son impact à long terme, mais il fait également face à des mises à jour de version et à des défis de sécurité. 4) Les améliorations des performances ces dernières années, telles que la sortie de PHP7, lui permettent de rivaliser avec les langues modernes. 5) À l'avenir, PHP doit faire face à de nouveaux défis tels que la conteneurisation et les microservices, mais sa flexibilité et sa communauté active le rendent adaptable.

Pourquoi utiliser PHP? Avantages et avantages expliquésPourquoi utiliser PHP? Avantages et avantages expliquésApr 16, 2025 am 12:16 AM

Les principaux avantages du PHP comprennent la facilité d'apprentissage, un soutien solide sur le développement Web, les bibliothèques et les cadres riches, les performances élevées et l'évolutivité, la compatibilité multiplateforme et la rentabilité. 1) Facile à apprendre et à utiliser, adapté aux débutants; 2) une bonne intégration avec les serveurs Web et prend en charge plusieurs bases de données; 3) ont des cadres puissants tels que Laravel; 4) Des performances élevées peuvent être obtenues grâce à l'optimisation; 5) prendre en charge plusieurs systèmes d'exploitation; 6) Open source pour réduire les coûts de développement.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft