Ce didacticiel décrit comment interagir efficacement avec une base de données MySQL à partir de votre application Workerman. Workerman lui-même ne gère pas directement les connexions de la base de données; Vous devrez utiliser une bibliothèque de base de données PHP comme MySQLI ou PDO. La clé est de gérer efficacement les connexions pour éviter les goulots d'étranglement et les problèmes de performances, en particulier sous une concurrence élevée. Nous nous concentrerons sur l'utilisation d'un pool de connexions pour gérer efficacement les connexions de la base de données.
Le moyen le plus efficace de connecter Workerman à une base de données MySQL est d'utiliser un pool de connexion. Un pool de connexions pré-établit un ensemble de connexions de base de données, minimisant la surcharge de la création de nouvelles connexions pour chaque demande. Cela améliore considérablement les performances, en particulier sous une charge lourde. Voici comment implémenter un pool de connexion simple à l'aide de MySQLI:
<?php class DatabasePool { private $connections = []; private $config = []; private $maxConnections = 10; // Adjust as needed public function __construct($config) { $this->config = $config; } public function getConnection() { if (count($this->connections) < $this->maxConnections) { $this->connections[] = new mysqli( $this->config['host'], $this->config['user'], $this->config['password'], $this->config['database'] ); if ($this->connections[count($this->connections)-1]->connect_errno) { die("Failed to connect to MySQL: " . $this->connections[count($this->connections)-1]->connect_error); } } return array_shift($this->connections); } public function releaseConnection($connection) { $this->connections[] = $connection; } } // Example usage within your Workerman application: $dbConfig = [ 'host' => 'localhost', 'user' => 'your_username', 'password' => 'your_password', 'database' => 'your_database' ]; $dbPool = new DatabasePool($dbConfig); $conn = $dbPool->getConnection(); // Perform database operations using $conn $dbPool->releaseConnection($conn); ?>
Cet exemple montre un pool de connexion de base. Pour les environnements de production, envisagez d'utiliser une solution plus robuste comme une bibliothèque de pool de connexion dédiée offrant des fonctionnalités de surveillance de la connexion et de reconnexion automatique.
Les meilleures pratiques garantissent des opérations de base de données efficaces et sécurisées dans votre application Workerman:
<?php class DatabasePool { private $connections = []; private $config = []; private $maxConnections = 10; // Adjust as needed public function __construct($config) { $this->config = $config; } public function getConnection() { if (count($this->connections) < $this->maxConnections) { $this->connections[] = new mysqli( $this->config['host'], $this->config['user'], $this->config['password'], $this->config['database'] ); if ($this->connections[count($this->connections)-1]->connect_errno) { die("Failed to connect to MySQL: " . $this->connections[count($this->connections)-1]->connect_error); } } return array_shift($this->connections); } public function releaseConnection($connection) { $this->connections[] = $connection; } } // Example usage within your Workerman application: $dbConfig = [ 'host' => 'localhost', 'user' => 'your_username', 'password' => 'your_password', 'database' => 'your_database' ]; $dbPool = new DatabasePool($dbConfig); $conn = $dbPool->getConnection(); // Perform database operations using $conn $dbPool->releaseConnection($conn); ?>
Cet exemple montre comment utiliser une instruction préparée pour interroger en toute sécurité la base de données. Surtout, notez que $username
doit être désinfecté ou validé avant que soit utilisé dans la requête pour empêcher l'injection de SQL. Ne jamais concaténer directement l'entrée de l'utilisateur dans les requêtes SQL.
N'oubliez pas de remplacer les valeurs d'espace réservé comme 'your_username'
, 'your_password'
et 'your_database'
par vos informations d'identification réelles de base de données. Cette approche complète assure des interactions à la fois efficaces et sécurisées dans votre application 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!