LockHandler
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
LockHandler
3.4
的LockHandler
类在Symfony弃用3.4和4.0在Symfoob娱乐下载ny将被删除。使用SemaphoreStore或FlockStore从锁组件。
锁是什么?
文件锁定机制,限制使用电脑文件只允许一个用户或进程访问在任何特定时间。这种机制被引入几十年前大型机,但仍被用于现代应用程序。
ob娱乐下载Symfony提供了一种LockHelper来帮助您在您的项目中使用锁。
使用
谨慎
锁处理程序只如果你使用一个服务器。如果有多个主机,你不能使用这个帮手。
锁可以被使用,例如,只允许一个实例运行命令:
1 2 3 4 5 6 7 8
使用ob娱乐下载\组件\文件系统\LockHandler;美元lockHandler=新LockHandler (“hello.lock”);如果(!美元lockHandler- >锁()){/ /资源“hello”已经被另一个进程返回0;}
构造函数的第一个参数是一个字符串,它将使用的文件的名称用于创建本地文件系统上的锁。Symfony命令的一个最佳实践是使用命ob娱乐下载令名称,如acme:我的命令
。LockHandler
清理的内容字符串创建的文件之前,你可以通过任何值这个论点。
提示
的.lock
扩展名是可选的,但这是一个常见的实践包括它。这将使它更容易找到锁文件的文件系统。此外,为了避免名称冲突,LockHandler
还附加一个散列的锁文件的名称。
默认情况下,锁将被创建在系统的临时目录,但是您可以选择创建的目录锁通过它作为第二个参数的构造函数。
提示
另一种配置的目录创建锁是定义一个特殊的环境变量,因为PHP将使用这个值来覆盖默认的临时目录中。在基于unix的系统定义TMPDIR
变量。在Windows系统上,定义这些变量:TMP
,临时
或USERPROFILE
(他们在这个顺序检查)。这种方法是有用的,例如当部署第三方Symfony应用程序的代码不能被修改。ob娱乐下载
的lock ()方法试图获得锁。如果加了锁,该方法返回真正的
,假
否则。如果lock ()
方法被调用几次它总是返回相同的实例真正的
如果锁了第一个电话。
你可以传递一个可选的阻塞参数作为第一个参数lock ()
方法,该违约假
。如果这个设置真正的
,PHP代码将无限期等待,直到另一个进程释放锁。
谨慎
意识到这一事实的资源自动释放锁一旦PHP垃圾收集过程适用于LockHandler
对象。这意味着如果你重构本文所示的第一个例子如下:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\文件系统\LockHandler;如果(!新LockHandler (“hello.lock”))- >锁()){/ /资源“hello”已经被另一个进程返回0;}
现在的代码无法正常工作,因为PHP的垃圾收集机制消除了引用LockHandler
对象,因此,锁被释放后被创建。
另一个替代方法来释放锁明确在需要的时候使用release ()方法。