我想分享一个 内存缓存 </跨度> Python和PHP之间的关键。 Python写密钥,PHP读取它。我正在使用Cakephp框架,使用php-pecl- 内存缓存 </跨度> (不是php-pecl-memcached),而python … - 内存缓存 </跨度> 所有的python库。
蟒蛇:
mc = memcache.Client([“127.0.0.1:11211”]) key =“key1” 值= 1323779849 mc.set(键,值)
PHP:
echo Cache :: read(‘key1’,‘memcached’);
PHP不能……
终于搞定了。很多东西没有按预期工作。
一个问题是php和python使用不同的标志来做不同的事情。 在all-python或all-php解决方案中不是问题,但对于环境间通信来说是一个真正的问题。一个有用的资源是 http://www.hjp.at/zettel/m/memcached_flags.rxml ,这表明python-memcache将长整数标记为'2',php-memcache不理解,因此 压缩错误 。我修改了python-memcache以在set函数中包含'flag-override'。这个变量只是强制一个特定的标志,而不管python memcache认为它应该是什么。这允许我将Int从2重新标记为0.我将分析当前版本的python-memcache并将其提交给Github。这允许我强制python long int flag(2)到php会理解的东西(0)。
1.3.3之前的CakePhp将所有密钥存储在memcached中,并带有一个额外的key_expires密钥,标记为768等,如果没有这个附加密钥,它就找不到你要查找的密钥。值得庆幸的是,这种行为在后来的Cakephp版本中被转储(我只是升级到1.3.13)并且它现在运行良好。
当你通过python memcached放置东西时,它可能会被腌制。所以PHP无法解开它。我会尝试使用某种非常基本的类型,也许是ctypes?也许原始字符串?