Maison > cadre php > Workerman > le corps du texte

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

WBOY
Libérer: 2023-11-07 15:43:02
original
826 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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();
Copier après la connexion
  1. Exécutez la commande suivante dans la commande ligne , Démarrez le service :
php cache.php start
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal