Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah pengoptimuman kelewatan Swoole dan Workerman untuk sambungan data dan penghantaran data antara PHP dan MySQL

Kaedah pengoptimuman kelewatan Swoole dan Workerman untuk sambungan data dan penghantaran data antara PHP dan MySQL

WBOY
WBOYasal
2023-10-15 08:00:561294semak imbas

Kaedah pengoptimuman kelewatan Swoole dan Workerman untuk sambungan data dan penghantaran data antara PHP dan MySQL

Kaedah pengoptimuman kelewatan Swoole dan Workerman untuk sambungan data dan penghantaran data antara PHP dan MySQL

Pengenalan:
Dalam pembangunan web, banyak aplikasi perlu mengendalikan pangkalan data, dan sambungan data dan penghantaran data antara PHP dan MySQL adalah mungkin akan terjejas oleh kelewatan. Artikel ini akan memperkenalkan secara terperinci cara menggunakan Swoole dan Workerman untuk melaksanakan pengoptimuman kelewatan pada sambungan data dan penghantaran data antara PHP dan MySQL, dan menyediakan contoh kod khusus.

1. Kaedah pengoptimuman kelewatan Swoole:

  1. Gunakan kumpulan sambungan:
    Swoole menyediakan kumpulan sambungan MySQL berasaskan coroutine Dengan pra-membuat beberapa sambungan dan menggunakannya semula, overhed untuk menyambung dan memutuskan sambungan boleh dikurangkan. Elakkan sambungan yang kerap dan penutupan pangkalan data. Berikut ialah kod sampel menggunakan kumpulan sambungan 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. Menggunakan coroutine:
    Ciri coroutine Swoole membolehkan kod PHP melakukan operasi tak segerak secara segerak, seterusnya mengurangkan kependaman. Berikut ialah contoh kod untuk menggunakan Swoole coroutine untuk melaksanakan pertanyaan 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. Kaedah pengoptimuman kelewatan pekerja:

  1. Pertanyaan pangkalan data tak segerak:
    Workerman itu sendiri dipacu peristiwa dan boleh dilakukan dengan cara segerak pangkalan data , dengan itu mengurangkan kependaman. Berikut ialah contoh kod yang menggunakan Workerman untuk menanya pangkalan data secara tak segerak:
// 引入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. Gunakan kumpulan sambungan:
    Komponen sambungan MySQL Pekerja menyediakan fungsi kumpulan sambungan, yang boleh mengurangkan sambungan dan pemotongan dengan pra-mewujudkan bilangan sambungan tertentu dan menggunakannya semula. Kos membuka sambungan. Berikut ialah contoh kod menggunakan kumpulan sambungan 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();

Kesimpulan:
Dengan menggunakan kaedah pengoptimuman yang disediakan oleh Swoole dan Workerman, kelewatan dalam sambungan data dan penghantaran data antara PHP dan MySQL dapat dikurangkan dengan berkesan. Memilih kaedah pengoptimuman yang sesuai boleh meningkatkan prestasi dan kelajuan tindak balas aplikasi web. Di atas ialah pengenalan terperinci kepada kaedah pengoptimuman kelewatan Swoole dan Workerman untuk sambungan data dan penghantaran data antara PHP dan MySQL. Saya harap ia akan membantu anda.

Atas ialah kandungan terperinci Kaedah pengoptimuman kelewatan Swoole dan Workerman untuk sambungan data dan penghantaran data antara PHP dan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn