Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan Memcached untuk cache data dalam Workerman

Cara menggunakan Memcached untuk cache data dalam Workerman

WBOY
WBOYasal
2023-11-07 15:43:02831semak imbas

Cara menggunakan Memcached untuk cache data dalam Workerman

Cara menggunakan Memcached untuk caching data dalam Workerman

Memcached ialah sistem caching memori teragih sumber terbuka yang sering digunakan untuk meningkatkan prestasi dan kebolehskalaan aplikasi web. Workerman ialah rangka kerja Soket PHP berprestasi tinggi yang boleh digunakan untuk membina aplikasi komunikasi masa nyata. Artikel ini akan memperkenalkan cara menggunakan Memcached untuk caching data dalam Workerman dan memberikan contoh kod khusus.

1. Pasang dan konfigurasikan Memcached

Sebelum bermula, anda perlu memasang dan mengkonfigurasi Memcached. Memcached boleh dipasang pada sistem Linux melalui arahan berikut:

sudo apt-get install memcached

Selepas pemasangan selesai, anda perlu mengedit fail konfigurasi /etc/memcached.conf, tetapkan IP pendengaran dan nombor port, dan nyatakan saiz memori.

-d
-p 11211
-l 127.0.0.1
-m 128

Simpan fail konfigurasi dan mulakan semula perkhidmatan Memcached.

2. Pasang Workerman

Seterusnya, anda perlu memasang rangka kerja Workerman. Anda boleh memasangnya menggunakan Composer dengan arahan berikut:

composer require workerman/workerman

3. Tulis kod untuk menggunakan Memcached

  1. Buat fail bernama cache.php dan tulis kod berikut:
<?php

require_once __DIR__.'/vendor/autoload.php';

use WorkermanWorker;
use WorkermanProtocolsHttp;

$worker = new Worker('http://0.0.0.0:8000');

$worker->onMessage = function ($connection, $request) {
    // 先尝试从缓存中获取数据
    $cache = new Memcached();
    $cache->addServer('127.0.0.1', 11211);
    $data = $cache->get($request->path());

    if ($data === false) {
        // 缓存中不存在数据,则从数据库中获取数据
        $data = get_data_from_database($request->path());

        // 将数据存入缓存
        $cache->set($request->path(), $data, 86400); // 缓存有效期为24小时
    }

    // 返回数据给客户端
    Http::header('Content-Type: application/json');
    Http::header('Cache-Control: max-age=86400'); // 设置浏览器缓存时间为24小时
    $connection->send(json_encode($data));
};

function get_data_from_database($path) {
    // 从数据库中获取数据的逻辑,此处省略
    return [
        'path' => $path,
        'data' => 'some data'
    ];
}

Worker::runAll();
  1. Jalankan arahan berikut dalam arahan baris , Mulakan perkhidmatan:
php cache.php start

4. Kod ujian

Anda boleh menggunakan penyemak imbas atau alat lain untuk menghantar permintaan HTTP untuk menguji fungsi caching data Memcached. Contohnya, jika anda mengakses http://localhost:8000/foo, data akan diambil daripada pangkalan data dan disimpan dalam cache. Akses http://localhost:8000/foo sekali lagi, dan data akan diperoleh terus daripada cache.

Melalui langkah di atas, kami berjaya menggunakan Memcached untuk caching data dalam Workerman. Contoh dalam kod hanya untuk rujukan dan perlu diselaraskan mengikut logik perniagaan tertentu apabila digunakan dalam amalan. Pada masa yang sama, anda perlu memberi perhatian untuk melindungi keselamatan perkhidmatan Memcached untuk mengelakkan operasi berniat jahat oleh pelawat yang tidak dibenarkan.

Atas ialah kandungan terperinci Cara menggunakan Memcached untuk cache data dalam Workerman. 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