您好,欢迎访问沃航(武汉)科技有限公司官方网站
php中的互斥与同步
2017-08-29 10:00:00

php作为一个单线程的语言,是的,他自己本身是无法开机多线程的。但是php是有需要考虑互斥与同步问题呢。

其实,答案是需要的。为什么,因为php的逻辑是每个用户访问网站都会产生一个进程去处理这个事务。但是有很多时候,用户所访问的事务需要占用一些独占的资源。这样就必须保证当有一个用户访问了某个独占资源时,其他用户无法访问这个资源。

下面,我就来介绍一下php如何写互斥锁。

一、了解核心函数

我们要使用的是flock函数。将 lock 设为 LOCK_SH,设置的将是共享锁。将 lock 设为LOCK_EX,设置的将是独占锁。至于独占锁与共享锁的区别,不是我们这节的重点。

二、互斥模式

目前有两种,一种是阻塞模式,一种是非阻塞模式。所谓阻塞模式就是当遇到互斥锁。程序会阻塞在那里,不往下执行。所谓非阻塞方式,则是会继续向前进。所以非阻塞方式的开发,需要注意做一个判断处理。是否设置非阻塞,关键看是否有添加LOCK_NB。

三、解锁方式

解锁主要需要使用LOCK_UN参数。


下面,小沃通过流程图的方式让您这边更加容易的了解整个操作流程。

武汉app开发             武汉app开发

    非阻塞模式                              阻塞模式


下面小沃贡献一段很简单的php的互斥程序。

$lock = fopen(".test.lock", "w+");
if(flock($lock,LOCK_EX)) {
    echo "这里写需要互斥的代码";
    flock($lock,LOCK_UN);
}
fclose($lock);
联系我们
地址:
武汉市洪山区蓝晶国际7栋903
QQ:
932773931
电话:
027-59761089-806
手机:
13397158231
邮箱:
jevian_ma@worldflying.cn
×
物联网组态平台
试用账号:123456
试用密码:123456
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn
×
积木编程平台
试用方式:试用手机号码注册即可使用
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn