Rumah > rangka kerja php > Workerman > Laksanakan fungsi caching teragih dalam dokumen Workerman

Laksanakan fungsi caching teragih dalam dokumen Workerman

王林
Lepaskan: 2023-11-08 09:03:48
asal
1060 orang telah melayarinya

Laksanakan fungsi caching teragih dalam dokumen Workerman

Untuk melaksanakan fungsi caching yang diedarkan dalam dokumen Workerman, contoh kod khusus diperlukan

Pengenalan:
Dengan perkembangan pesat Internet, bilangan akses serentak kepada aplikasi terus meningkat. Untuk meningkatkan prestasi aplikasi, teknologi caching boleh digunakan untuk mengurangkan tekanan pada pangkalan data. Dalam sistem teragih, menggunakan cache teragih boleh meningkatkan lagi prestasi aplikasi. Artikel ini akan memperkenalkan cara menggunakan Workerman untuk melaksanakan fungsi cache yang diedarkan dan memberikan contoh kod khusus.

1. Pengenalan kepada Workerman
Workerman ialah rangka kerja pembangunan PHP berprestasi tinggi yang boleh digunakan untuk membina aplikasi web. Berbanding dengan aplikasi PHP tradisional, Workerman mempunyai prestasi yang lebih baik, konkurensi yang lebih tinggi dan penggunaan sumber yang lebih rendah. Workerman dilaksanakan berdasarkan model dipacu peristiwa, boleh mengendalikan sejumlah besar sambungan serentak, dan sesuai untuk membina sistem teragih berprestasi tinggi.

2. Gambaran keseluruhan caching teragih
Caching teragih merujuk kepada menyimpan data cache secara teragih pada berbilang pelayan, dan merealisasikan membaca dan menulis data melalui komunikasi rangkaian. Berbanding dengan cache yang berdiri sendiri, cache yang diedarkan boleh meningkatkan kadar hit cache dan keupayaan serentak, seterusnya mengurangkan tekanan pada pangkalan data.

3. Gunakan Workerman untuk melaksanakan fungsi cache yang diedarkan
Melaksanakan fungsi cache yang diedarkan dalam Workerman memerlukan penggunaan Redis sebagai enjin penyimpanan data. Redis ialah pangkalan data dalam memori berprestasi tinggi yang boleh digunakan untuk melaksanakan fungsi seperti caching dan baris gilir mesej. Berikut ialah langkah khusus untuk menggunakan Workerman untuk melaksanakan fungsi cache yang diedarkan:

  1. Pasang pelayan Redis
    Bergantung pada sistem pengendalian, anda boleh memilih cara yang berbeza untuk memasang pelayan Redis. Sebagai contoh, pada sistem Ubuntu, anda boleh menggunakan arahan apt-get untuk memasang Redis:
sudo apt-get install redis-server
Salin selepas log masuk
  1. Install Workerman
    Anda boleh menggunakan Composer untuk memasangnya, cuma jalankan arahan berikut dalam direktori projek:
composer require workerman/workerman
Salin selepas log masuk
  1. Tulis kod pelayan Cache yang diedarkan
    Buat fail yang dipanggil "DistributedCacheServer.php" dan tambah kod berikut:
<?php
require_once __DIR__ . '/vendor/autoload.php';

use WorkermanWorker;
use WorkermanWebServer;

$worker = new Worker();
$worker->count = 4;

// 创建一个Redis连接
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 处理客户端连接
$worker->onConnect = function ($connection) use ($redis) {
    // 设置connection的缓存对象为redis
    $connection->cache = $redis;
};

// 处理客户端消息
$worker->onMessage = function ($connection, $data) {
    // 解析请求数据
    $request = json_decode($data, true);
    
    // 根据请求类型执行相应的操作
    switch ($request['type']) {
        case 'get':
            // 从缓存中取出数据
            $value = $connection->cache->get($request['key']);
            // 将结果返回给客户端
            $connection->send($value);
            break;
        case 'set':
            // 将数据写入缓存
            $connection->cache->set($request['key'], $request['value']);
            // 返回给客户端操作成功的消息
            $connection->send('OK');
            break;
        default:
            // 返回给客户端未知的请求类型
            $connection->send('Unknown request type');
            break;
    }
};

// 运行worker
Worker::runAll();
?>
Salin selepas log masuk
  1. Tulis kod klien
    Cipta fail yang dipanggil "DistributedCacheClient.php" dan tambah kod berikut:
  2. rreee
    Jalankan pelayan dan klien
  1. Laksanakan arahan berikut dalam baris arahan untuk memulakan pelayan cache dan klien masing-masing:
  2. <?php
    require_once __DIR__ . '/vendor/autoload.php';
    
    $client = stream_socket_client('tcp://127.0.0.1:8080', $errno, $errmsg);
    if (!$client) {
        exit("Stream socket client create failed. Errno=$errno, errmsg=$errmsg");
    }
    
    // 发送请求消息到缓存服务器
    function sendRequest($type, $key, $value = '')
    {
        global $client;
        
        $request = json_encode(['type' => $type, 'key' => $key, 'value' => $value]);
        
        // 发送请求消息
        fwrite($client, $request . "
    ");
        
        // 读取服务器响应
        $response = fgets($client);
        
        return $response;
    }
    
    // 示例:向缓存服务器写入数据
    $result = sendRequest('set', 'my_cache_key', 'Hello, Workerman!');
    echo "Set cache result: $result
    ";
    
    // 示例:从缓存服务器读取数据
    $result = sendRequest('get', 'my_cache_key');
    echo "Get cache result: $result
    ";
    
    fclose($client);
    ?>
    Salin selepas log masuk
    Akhir sekali, anda boleh mengesahkan pelaksanaan fungsi cache yang diedarkan dengan memerhatikan output klien.

    Ringkasan:

    Artikel ini memperkenalkan langkah-langkah untuk menggunakan Workerman untuk melaksanakan fungsi cache yang diedarkan dan menyediakan contoh kod khusus. Dengan menggunakan cache teragih, anda boleh meningkatkan prestasi aplikasi, meningkatkan konkurensi dan mengurangkan tekanan pada pangkalan data. Dalam projek sebenar, fungsi cache yang diedarkan boleh dipertingkatkan lagi dan dioptimumkan mengikut keperluan khusus. Saya harap artikel ini akan membantu pembangun yang menggunakan atau akan menggunakan Workerman.

    Atas ialah kandungan terperinci Laksanakan fungsi caching teragih dalam dokumen Workerman. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan