PHP Memcached会话锁定启用
我使用“memcached”存储php会话。 重要的是,请求必须同步(以避免重复的事务或操作),但在使用“memcached”会话时,“会话锁定”不起作用PHP Memcached会话锁定启用,php,session,locking,memcached,Php,Session,Locking,Memcached,我使用“memcached”存储php会话。 重要的是,请求必须同步(以避免重复的事务或操作),但在使用“memcached”会话时,“会话锁定”不起作用 是否有某种方法可以锁定“memcached”会话,直到执行一个请求为止?当您启动时,可以尝试类似于$(field\u name)\u is\u locked=true的方法,然后当您完成$(field\u name)\u is\u locked=false并在更新变量时将其传递给服务器。没有内置变量,但是你可以自己写东西让你的代码原子化 $k
是否有某种方法可以锁定“memcached”会话,直到执行一个请求为止?当您启动时,可以尝试类似于
$(field\u name)\u is\u locked=true
的方法,然后当您完成$(field\u name)\u is\u locked=false
并在更新变量时将其传递给服务器。没有内置变量,但是你可以自己写东西让你的代码原子化
$key = 'lockable_key_name';
$lockkey = $key.'##LOCK';
if($memcached->add($lockkey, '', 60)) {
$storedvalue = $memcached->get($key);
// do something with $storedvalue
$memcached->set($key, $newvalue);
// release
$memcached->delete($lockkey);
}
在代码中,您可以通过执行以下操作来检查锁:
if(!$memcached->get($lockkey)) {
// then do something
}
如果get方法返回false,则表示没有锁,或者操作已挂起并超过了上面add调用中指定的60秒超时时间。因为您需要可靠的/官方的来源: 根据PECL扩展页面上的changelog文档,memcached扩展自3.0.4版起支持会话锁定:
如果您运行的是较早的版本(这意味着您的memcached扩展版本已超过4年),您运气不佳,应该升级。您能提供更多信息吗?我想我不明白你的问题。会话处理程序是在php.ini中配置的:
session.save\u handler=memcache session.save\u path=”tcp://192.168.*****“
PHP使用PHP_memcache.dll(Win Server 2008,PHP5.3)切换到PECL是个好主意。谢谢