Maison >cadre php >Workerman >Comment utiliser Memcached pour la mise en cache des données dans Workerman

Comment utiliser Memcached pour la mise en cache des données dans Workerman

WBOY
WBOYoriginal
2023-11-07 15:43:02833parcourir

Comment utiliser Memcached pour la mise en cache des données dans Workerman

Comment utiliser Memcached pour la mise en cache des données dans Workerman

Memcached est un système de mise en cache de mémoire distribuée open source qui est souvent utilisé pour améliorer les performances et l'évolutivité des applications Web. Workerman est un framework PHP Socket hautes performances qui peut être utilisé pour créer des applications de communication en temps réel. Cet article explique comment utiliser Memcached pour la mise en cache des données dans Workerman et fournit des exemples de code spécifiques.

1. Installer et configurer Memcached

Avant de commencer, vous devez installer et configurer Memcached. Memcached peut être installé sur un système Linux via la commande suivante :

sudo apt-get install memcached

Une fois l'installation terminée, vous devez modifier le fichier de configuration /etc/memcached.conf, définir l'IP d'écoute et le numéro de port, et spécifier la taille de la mémoire.

-d
-p 11211
-l 127.0.0.1
-m 128

Enregistrez le fichier de configuration et redémarrez le service Memcached.

2. Installez Workerman

Ensuite, vous devez installer le framework Workerman. Vous pouvez l'installer en utilisant Composer avec la commande suivante :

composer require workerman/workerman

3. Écrivez le code pour utiliser Memcached

  1. Créez un fichier nommé cache.php et écrivez le code suivant :
<?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. Exécutez la commande suivante dans la commande ligne , Démarrez le service :
php cache.php start

4. Code de test

Vous pouvez utiliser un navigateur ou d'autres outils pour envoyer des requêtes HTTP afin de tester la fonction de mise en cache des données de Memcached. Par exemple, si vous accédez à http://localhost:8000/foo, les données seront extraites de la base de données et stockées dans le cache. Accédez à nouveau à http://localhost:8000/foo et les données seront obtenues directement à partir du cache.

Grâce aux étapes ci-dessus, nous avons utilisé avec succès Memcached pour la mise en cache des données dans Workerman. Les exemples contenus dans le code sont uniquement à titre de référence et doivent être ajustés en fonction de la logique métier spécifique lorsqu'ils sont utilisés dans la pratique. Dans le même temps, vous devez veiller à protéger la sécurité du service Memcached afin d'éviter les opérations malveillantes de la part de visiteurs non autorisés.

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