13397158231   jevian_ma@worldflying.cn

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);

优秀产品推荐:可编程网络IO控制器

上一篇:如何利用html5技术实现自拍

下一篇:通过命令行下载sdk-manager的build tools

联系我们

  • 地址:武汉市东湖高新开发区光谷总部国际1栋2412室
  • QQ:932773931
  • 电话:027-59761089-806
  • 手机:13397158231
  • 邮箱:jevian_ma@worldflying.cn

关注公众号

扫码添加微信

沃航(武汉)科技有限公司版权所有

备案号:鄂ICP备16014230号-1

本网站由提供CDN加速/云存储服务