Maison >développement back-end >tutoriel php >Méthode d'optimisation des délais de Swoole et Workerman pour la connexion et la transmission de données entre PHP et MySQL

Méthode d'optimisation des délais de Swoole et Workerman pour la connexion et la transmission de données entre PHP et MySQL

WBOY
WBOYoriginal
2023-10-15 08:00:561389parcourir

Méthode doptimisation des délais de Swoole et Workerman pour la connexion et la transmission de données entre PHP et MySQL

Méthode d'optimisation des délais de Swoole et Workerman pour la connexion et la transmission de données entre PHP et MySQL

Introduction :
Dans le développement Web, de nombreuses applications doivent faire fonctionner la base de données, et la connexion et la transmission de données entre PHP et MySQL sont possibles sera affecté par les retards. Cet article présentera en détail comment utiliser Swoole et Workerman pour effectuer une optimisation des délais de connexion et de transmission de données entre PHP et MySQL, et fournira des exemples de code spécifiques.

1. Méthode d'optimisation des délais de Swoole :

  1. Utiliser un pool de connexions :
    Swoole fournit un pool de connexions MySQL basé sur une coroutine En pré-créant un certain nombre de connexions et en les réutilisant, la surcharge de connexion et de déconnexion peut être réduite. Évitez les connexions fréquentes et les arrêts de bases de données. Voici un exemple de code utilisant le pool de connexions Swoole :
// 创建MySQL连接池
$pool = new SwooleCoroutineConnectionPool(function () {
    $db = new SwooleCoroutineMySQL();
    $db->connect([
        'host' => 'localhost',
        'port' => 3306,
        'user' => 'root',
        'password' => '123456',
        'database' => 'test',
    ]);

    return $db;
}, 10);

// 从连接池中获取一个连接
$db = $pool->get();

// 执行查询语句
$result = $db->query('SELECT * FROM users');

// 释放连接
$pool->put($db);
  1. Utilisation de coroutines :
    La fonctionnalité coroutine de Swoole permet au code PHP d'effectuer des opérations asynchrones de manière synchrone, réduisant ainsi davantage la latence. Voici un exemple de code permettant d'utiliser la coroutine Swoole pour effectuer une requête MySQL :
// 开启协程
SwooleRuntime::enableCoroutine();

go(function () {
    // 创建MySQL连接
    $db = new SwooleCoroutineMySQL();
    $db->connect([
        'host' => 'localhost',
        'port' => 3306,
        'user' => 'root',
        'password' => '123456',
        'database' => 'test',
    ]);

    // 执行查询语句
    $result = $db->query('SELECT * FROM users');

    // 输出查询结果
    print_r($result);

    // 关闭连接
    $db->close();
});

2. Méthode d'optimisation du délai de Workerman :

  1. Requête de base de données asynchrone :
    Workerman lui-même est piloté par des événements et peut être effectué de manière asynchrone. Requêtes de base de données , réduisant ainsi la latence. Voici un exemple de code qui utilise Workerman pour interroger des bases de données de manière asynchrone :
// 引入Workerman库
require_once __DIR__ . '/Workerman/Autoloader.php';

// 创建一个Worker线程
$worker = new Worker('websocket://0.0.0.0:8000');

// 设置异步MySQL连接
$worker->onWorkerStart = function () {
    $GLOBALS['db'] = new WorkermanMySQLAsync('mysql://root:123456@localhost:3306/test');
};

// 处理客户端消息
$worker->onMessage = function ($connection, $data) {
    // 异步查询数据库
    $GLOBALS['db']->query('SELECT * FROM users', function ($result) use ($connection) {
        $connection->send(json_encode($result));
    });
};

// 运行Worker线程
Worker::runAll();
  1. Utiliser le pool de connexions :
    Le composant de connexion MySQL de Workerman fournit une fonction de pool de connexions, qui peut réduire les connexions et les déconnexions en pré-créant un certain nombre de connexions et leur réutilisation. Le coût d’ouverture d’une connexion. Voici un exemple de code utilisant le pool de connexion Workerman :
// 引入Workerman库
require_once __DIR__ . '/Workerman/Autoloader.php';

// 创建一个Worker线程
$worker = new Worker('websocket://0.0.0.0:8000');

// 设置MySQL连接池
$worker->onWorkerStart = function () {
    $GLOBALS['db'] = new WorkermanMySQLConnectionPool('mysql://root:123456@localhost:3306/test', 10);
};

// 处理客户端消息
$worker->onMessage = function ($connection, $data) {
    // 从连接池中获取一个连接
    $GLOBALS['db']->get(function ($db) use ($connection) {
        // 执行查询语句
        $db->query('SELECT * FROM users', function ($result) use ($connection, $db) {
            // 输出查询结果
            $connection->send(json_encode($result));

            // 释放连接到连接池
            $db->put();
        });
    });
};

// 运行Worker线程
Worker::runAll();

Conclusion :
En utilisant les méthodes d'optimisation fournies par Swoole et Workerman, le délai de connexion et de transmission des données entre PHP et MySQL peut être efficacement réduit. Choisir la méthode d'optimisation appropriée peut améliorer les performances et la vitesse de réponse des applications Web. Ce qui précède est une introduction détaillée à la méthode d'optimisation des délais de Swoole et Workerman pour la connexion et la transmission de données entre PHP et MySQL. J'espère que cela vous sera utile.

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