LockHandler

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.8,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

LockHandler

锁是什么?

文件锁定机制,限制使用电脑文件只允许一个用户或进程访问在任何特定时间。这种机制被引入几十年前大型机,但仍被用于现代应用程序。

欧宝娱乐app下载地址Symfony提供了一种LockHelper来帮助您在您的项目中使用锁。

使用

谨慎

锁处理程序只如果你使用一个服务器。如果有多个主机,你不能使用这个帮手。

锁可以被使用,例如,只允许一个实例运行命令:

1 2 3 4 5 6 7 8
使用欧宝娱乐app下载地址\组件\文件系统\LockHandler;美元lockHandler=LockHandler (“hello.lock”);如果(!美元lockHandler- >锁()){/ /资源“hello”已经被另一个进程返回0;}

构造函数的第一个参数是一个字符串,它将使用的文件的名称用于创建本地文件系统上的锁。Symfony命令的一个最佳实践是使用命欧宝娱乐app下载地址令名称,如acme:我的命令LockHandler清理的内容字符串创建的文件之前,你可以通过任何值这个论点。

提示

.lock扩展名是可选的,但这是一个常见的实践包括它。这将使它更容易找到锁文件的文件系统。此外,为了避免名称冲突,LockHandler还附加一个散列的锁文件的名称。

默认情况下,锁将被创建在系统的临时目录,但是您可以选择创建的目录锁通过它作为第二个参数的构造函数。

提示

另一种配置的目录创建锁是定义一个特殊的环境变量,因为PHP将使用这个值来覆盖默认的临时目录中。在基于unix的系统定义TMPDIR变量。在Windows系统上,定义这些变量:TMP,临时USERPROFILE(他们在这个顺序检查)。这种方法是有用的,例如当部署第三方Symfony应用程序的代码不能被修改。欧宝娱乐app下载地址

lock ()方法试图获得锁。如果加了锁,该方法返回真正的,否则。如果lock ()方法被调用几次它总是返回相同的实例真正的如果锁了第一个电话。

你可以传递一个可选的阻塞参数作为第一个参数lock ()方法,该违约。如果这个设置真正的,PHP代码将无限期等待,直到另一个进程释放锁。

谨慎

意识到这一事实的资源自动释放锁一旦PHP垃圾收集过程适用于LockHandler对象。这意味着如果你重构本文所示的第一个例子如下:

1 2 3 4 5 6 7
使用欧宝娱乐app下载地址\组件\文件系统\LockHandler;如果(!LockHandler (“hello.lock”))- >锁()){/ /资源“hello”已经被另一个进程返回0;}

现在的代码无法正常工作,因为PHP的垃圾收集机制消除了引用LockHandler对象,因此,锁被释放后被创建。

另一个替代方法来释放锁明确在需要的时候使用release ()方法。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。