7
votes

Memcache Obtenir des temps d'expiration clés

Utilisation de Memcached et de la bibliothèque MEMCACHED PHP, est-il un moyen d'obtenir l'heure d'expiration des clés actuelles lorsque vous effectuez un obtenir ?


0 commentaires

3 Réponses :


6
votes

Non, ce type de données n'est pas récupérable de la fin du client. Si vous en avez vraiment besoin, rangez-le avec les données dans une matrice sérialisée ou quelque chose. En outre, consultez Cet article juste au cas où vous essayaient de faire quelque chose de similaire.


0 commentaires

15
votes

Utilisez cet exemple. Il affiche toutes vos clés de serveur avec leurs quêtes d'expiration, de sorte que vous puissiez obtenir l'heure d'expiration de la clé actuelle.

function getMemcacheKeys() {

    $memcache = new Memcache;
    $memcache->connect('192.168.1.18', 11211) or die ("Could not connect to memcache server");

    $list = array();
    $allSlabs = $memcache->getExtendedStats('slabs');
    foreach($allSlabs as $server => $slabs) {
        foreach($slabs as $slabId => $slabMeta) {
           if (!is_numeric($slabId)) {
                continue;
           } 
           $cdump = $memcache->getExtendedStats('cachedump',(int)$slabId);
            foreach($cdump AS $keys => $arrVal) {
                if (!is_array($arrVal)) continue;
                foreach($arrVal AS $k => $v) {                   
                    echo $k .' - '.date('H:i d.m.Y',$v[1]).'<br />';
                }
           }
        }
    }   
}


0 commentaires

3
votes

trois notes sur l'extrait de Jason:

  1. Il y a une limite de 2 méga dans le message de réponse CacheDump , vous devez donc vérifier s'il y a toutes les touches stockées dans la réponse, vous pouvez obtenir les touches stockées de nombres réels dans $ slabmeta ['"utilisé_chunks'] .

  2. memcached garde les clés expirées jusqu'à ce que quelqu'un leur obtienne; Si vous souhaitez obtenir l'heure d'expiration des touches valides, vous pouvez essayer d'obtenir les valeurs de tous ceux qui sont retournés par CacheDump . Exécution de cette procédure Plusieurs fois, vous pouvez supprimer toutes les touches expirées et optimiser la possibilité de lire toutes les touches (voir la limitation au point 1)

  3. dans la version memcached (ancienne) version 1.2.2 La valeur renvoyée dans v [1] est la clé de création de clé et non la clé expire l'heure, dans cette version il n'y a pas " T un moyen d'obtenir l'heure d'expiration d'une clé


0 commentaires