Workerman écrit un pool de connexions MySQL
Tout d'abord, vous devez comprendre pourquoi le pool de connexions est utilisé et quels problèmes le pool de connexions peut résoudre pour vous
La fonction principale du pool de connexions
1. Réduire et données Le serveur établit une connexion TCP avec une poignée de main à trois voies et ferme la connexion avec une poignée de main à quatre voies, réduisant ainsi la charge sur le client et le serveur MySQL et raccourcissant le temps de réponse à la demande
2. Réduire le nombre de connexions simultanées à la base de données, c'est-à-dire résoudre le problème du trop grand nombre de serveurs d'applications. Le problème de connexion à la base de données causé par un trop grand nombre de connexions
Si c'est pour résoudre le problème 1
, alors le pool de connexions à la base de données dans Workerman n'est pas la méthode la plus efficace, mais pose problème. Étant donné que PHP est monoprocessus et monothread, l'utilisation de PHP pour implémenter un pool de connexions à une base de données nécessite définitivement un processus distinct, qui impliquera une communication inter-processus, faisant de la communication directe originale avec MySQL un processus avec le pool de connexions, puis à nouveau. La communication MySQL augmente la charge côté application.
Le moyen le plus efficace de résoudre le problème 1 est d'établir un singleton de base de données pour chaque processus métier (comme la classe DB fournie par Workerman) et d'implémenter une longue connexion à la base de données, afin que toutes les requêtes de chaque processus utilisent son propre Pour une longue connexion à la base de données, il n'y a qu'une seule prise de contact TCP et une seule surcharge de vague de déconnexion dans tout le cycle de vie du processus, et l'application communique directement avec mysql Il n'y a pas de couche intermédiaire de communication IPC inter-processus comme un pool de connexions, et le. la performance est la plus élevée d’entre eux.
Si c'est pour la question 2
Vérifiez d'abord le nombre de serveurs d'applications dont vous disposez et le nombre de connexions simultanées de chaque serveur à MySQL. Si vous n'avez que 10 serveurs d'applications, chaque serveur a 50 processus et chaque processus a 1 connexion à la base de données, alors il n'y aura qu'un total de 10*50=500 connexions simultanées au serveur mysql (connexions non actives) et 500 connexions simultanées connexions pour mysql C'est un jeu d'enfant Pour résoudre le problème 2, il n'est pas nécessaire d'utiliser un pool de connexions.
Si vous disposez de 1 000 serveurs d'applications, alors un pool de connexions est nécessaire, mais ce pool de connexions ne peut pas être un pool de connexions exécuté sur le serveur d'applications local, car il existe 1 000 pools de connexions pour 1 000 serveurs d'applications, même si chacun. le pool de connexions n'ouvre que 10 connexions, le nombre de connexions dans la base de données sera facilement rempli. Ne vous attendez donc pas à ce que l'ouverture d'un pool de connexions implémenté par plusieurs processus de tâches sur le serveur actuel résolve ce problème.
Dans un cluster de 1 000 serveurs d'applications, mettre en place plusieurs processus sur chaque serveur pour mettre en œuvre le pooling de connexions est également une méthode peu fiable. La véritable façon de résoudre le problème 2 consiste à établir un serveur ou un cluster de pool de connexions de base de données indépendant pour gérer globalement tous les liens de base de données.
Pour résumer,
Si vous implémentez le pool de connexions MySQL de PHP uniquement pour la question 1, alors le singleton de base de données est une approche plus simple et plus efficace que ce qu'on appelle le pool de connexions.
S'il s'agit de réaliser la question 2, alors l'entreprise doit avoir une certaine échelle. Si vous souhaitez vraiment utiliser Workerman pour créer un cluster de pools de connexions séparé, voici un moyen simple de créer des processus de tâches, each Le processus crée une connexion à la base de données.Une fois que le processus de tâche a reçu la requête SQL, il l'envoie au serveur MySQL. Après le retour du serveur MySQL, le processus de tâche envoie le résultat à l'initiateur SQL.
Le code du pool de connexions est similaire au suivant. S'il s'agit d'un cluster de pool de connexions composé de plusieurs serveurs, il est préférable d'ajouter un lvs
// task worker,使用Text协议 $task_worker = new Worker('Text://0.0.0.0:1234'); $task_worker->count = 64; $task_worker->name = 'MysqlTask'; $task_worker->onMessage = function($connection, $sql) { // 执行sql.... 得到结果,这里省略.... $sql_result = your_mysql_query($sql); // 发送结果 $connection->send(json_encode($sql_result)); };
devant celui-ci pour appeler <🎜. >
use \Workerman\Connection\AsyncTcpConnection; // 与远程连接池服务建立异步链接,ip为远程连接池服务的ip,如果是集群就是lvs的ip $sql_connection = new AsyncTcpConnection('Text://ip:1234'); // 发送sql $sql_connection->send("SELECT ... FROM ....."); // 异步获得sql结果 $sql_connection->onMessage = function($sql_connection, $sql_result) { // 这里只是打印结果 var_dump(json_decode($task_result)); }; // 执行异步链接 $sql_connection->connect();
tutoriel Workerman.
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)

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

Étapes pour effectuer SQL dans NAVICAT: Connectez-vous à la base de données. Créez une fenêtre d'éditeur SQL. Écrivez des requêtes ou des scripts SQL. Cliquez sur le bouton Exécuter pour exécuter une requête ou un script. Affichez les résultats (si la requête est exécutée).

Erreurs et solutions courantes Lors de la connexion aux bases de données: nom d'utilisateur ou mot de passe (erreur 1045) Blocs de pare-feu Connexion (erreur 2003) Délai de connexion (erreur 10060) Impossible d'utiliser la connexion à socket (erreur 1042) Erreur de connexion SSL (erreur 10055) Trop de connexions Résultat de l'hôte étant bloqué (erreur 1129)
