Python脚本可以从memcache中检索值,但PHP脚本的resu为空

2024-10-01 07:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行一个python脚本来缓存一些数据

self.cache.set('test', 'my sample data', 300)
data = self.cache.get('test')
self.p(data)

此程序将导致打印“我的样本数据”。。。一切都很好,但是当我试图从php访问这个密钥时

^{pr2}$

我只得到空结果 所以我检查服务器状态

$list = array();
$allSlabs = $this->cache->getExtendedStats('slabs');
$items = $this->cache->getExtendedStats('items');
foreach($allSlabs as $server => $slabs) {
    foreach($slabs AS $slabId => $slabMeta) {
        $cdump = $this->cache->getExtendedStats('cachedump',(int)$slabId);
            foreach($cdump AS $server => $entries) {
                if($entries) {
                foreach($entries AS $eName => $eData) {
                    $list[$eName] = array(
                        'key' => $eName,
                        'server' => $server,
                        'slabId' => $slabId,
                        'detail' => $eData,
                        'age' => $items[$server]['items'][$slabId]['age'],
                    );
                }
                }
            }
        }
    }
ksort($list);
print_r($list);

这个关键的“测试”就在那里。。。但我无法进入

如果我在php中缓存了一些东西,我每次都会得到结果,但不知何故这个python+php缓存不起作用

如果有人知道哪里有问题,请给我建议。。。我什么都试过了


Tags: selfcachedataserverasitemsthislist
1条回答
网友
1楼 · 发布于 2024-10-01 07:29:44

可能是PHP和Python之间的哈希值不匹配吗?一个解决方案是:http://www.ruturaj.net/python-php-memcache-hash

在Python脚本中添加以下内容以更改哈希的计算方式。。。在

import memcache
import binascii
m = memcache.Client(['192.168.28.7:11211', '192.168.28.8:11211
', '192.168.28.9:11211'])

def php_hash(key):
    return (binascii.crc32(key) >> 16) & 0x7fff

for i in range(30):
       key = 'key' + str(i)
       a = m.get((php_hash(key), key))
       print i, a

相关问题 更多 >