Php Memcache获取密钥到期时间

Php Memcache获取密钥到期时间,php,memcached,Php,Memcached,使用memcached和php memcached库,是否有一种方法可以在执行操作时获取当前密钥的过期时间 否,无法从客户端检索此类数据。如果您确实需要它,请将它与数据一起存储在序列化数组或其他形式中。此外,如果您试图做类似的事情,请查看此示例。使用此示例。它显示所有服务器密钥及其过期日期时间,因此您可以获取当前密钥的过期时间 function getMemcacheKeys() { $memcache = new Memcache; $memcache->connect

使用memcached和php memcached库,是否有一种方法可以在执行操作时获取当前密钥的过期时间

否,无法从客户端检索此类数据。如果您确实需要它,请将它与数据一起存储在序列化数组或其他形式中。此外,如果您试图做类似的事情,请查看此示例。

使用此示例。它显示所有服务器密钥及其过期日期时间,因此您可以获取当前密钥的过期时间

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 />';
                }
           }
        }
    }   
}
函数getMemcacheKeys(){ $memcache=新的memcache; $memcache->connect('192.168.1.18',11211)或die(“无法连接到memcache服务器”); $list=array(); $allslab=$memcache->getExtendedStats('slab'); foreach($ALLSLABES as$server=>$SLLABES){ foreach($slabId=>$slabMeta){ 如果(!是数字($slabId)){ 继续; } $cdump=$memcache->getExtendedStats('cachedump',(int)$slabId); foreach($cdump作为$keys=>$arrVal){ 如果(!is_array($arrVal))继续; foreach($arrVal AS$k=>$v){ 回显$k.'-'.日期('H:i d.m.Y',$v[1])。
; } } } } }
关于Jason片段的三个注释:

  • cachedump
    回复消息中有2兆的限制,因此您必须验证答案中是否有所有存储的密钥,您可以在
    $slabMeta['used_chunks']中获取存储的密钥的实数。

  • Memcached保留过期的密钥,直到有人得到它们;如果只想获取有效密钥的过期时间,可以尝试获取由
    cachedump
    返回的所有密钥的值。多次运行此过程可以删除所有过期的密钥,并最大限度地提高读取所有密钥的可能性(请参见第1点的限制)

  • 在memcached(旧)版本1.2.2中,返回到
    $v[1]
    中的值是密钥创建时间,而不是密钥过期时间,在此版本中,无法获取密钥过期时间