【php】session读写锁
事件:a文件中操作$_SESSION['start'] = 'yes';
sleep(100); 休眠100s
在这休眠的时间段中,b文件操作$_SESSION['start'] = 'no';
结果:b文件一直在等待,等到a文件休眠结束才执行
原因:通过google查找,得知session存在着读写锁
当执行session_start()后,页面中对session的操作都会先保存在内存中,等到页面执行结束才会写的session文件中。在这期间,其他文件对session操作,会等待;
session会被锁住。直到页面执行完成,把内容从内存中写到文件;
解决:通过调用session_write_close()把数据手动写入session文件并结束session进程;另一个文件也无需等待,可立即操作session。但是session会被关闭,需要在次调用
session_start()方法,开启session;
a文件:
<?php
session_start(); $_SESSION['start'] = 'aaaa';
session_write_close(); // 将数据写入session文件,并结束session进程 sleep(20); session_start();
echo $_SESSION['start'].microtime();
b文件:在a文件sleep的时间段内执行,修改session值
<?php
session_start(); $_SESSION['start'] = 'bbbbb';
session_write_close(); session_start();
echo $_SESSION['start'].microtime();
【php】session读写锁的更多相关文章
- php session 读写锁
php session 读写锁 先看一个样例,功能: 1.点击页面中一个button,ajax运行php,php中用session记录运行到哪一步. 2.使用ajax轮询还有一个php,获取sessi ...
- 技术笔记:Delphi多线程应用读写锁
在多线程应用中锁是一个很简单又很复杂的技术,之所以要用到锁是因为在多进程/线程环境下,一段代码可能会被同时访问到,如果这段代码涉及到了共享资源(数据)就需要保证数据的正确性.也就是所谓的线程安全.之前 ...
- java多线程-读写锁
Java5 在 java.util.concurrent 包中已经包含了读写锁.尽管如此,我们还是应该了解其实现背后的原理. 读/写锁的 Java 实现(Read / Write Lock Java ...
- 让C#轻松实现读写锁分离
ReaderWriterLockSlim 类 表示用于管理资源访问的锁定状态,可实现多线程读取或进行独占式写入访问. 使用 ReaderWriterLockSlim 来保护由多个线程读取但每次只采用一 ...
- C#读写锁ReaderWriterLockSlim的使用
读写锁的概念很简单,允许多个线程同时获取读锁,但同一时间只允许一个线程获得写锁,因此也称作共享-独占锁.在C#中,推荐使用ReaderWriterLockSlim类来完成读写锁的功能. 某些场合下,对 ...
- 可重入锁 公平锁 读写锁、CLH队列、CLH队列锁、自旋锁、排队自旋锁、MCS锁、CLH锁
1.可重入锁 如果锁具备可重入性,则称作为可重入锁. ========================================== (转)可重入和不可重入 2011-10-04 21:38 这 ...
- 用读写锁三句代码解决多线程并发写入文件 z
C#使用读写锁三句代码简单解决多线程并发写入文件时提示“文件正在由另一进程使用,因此该进程无法访问此文件”的问题 在开发程序的过程中,难免少不了写入错误日志这个关键功能.实现这个功能,可以选择使用第三 ...
- 锁的封装 读写锁、lock
最近由于项目上面建议使用读写锁,而去除常见的lock锁.然后就按照需求封装了下锁.以简化锁的使用.但是开发C#的童鞋都知道lock关键字用起太方便了,但是lock关键字不支持超时处理.很无奈,为了实现 ...
- Java多线程13:读写锁和两种同步方式的对比
读写锁ReentrantReadWriteLock概述 大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务 ...
随机推荐
- C语言中的强制类型转换
先直接放程序吧,后面还有总结. -------------------------------------------start------------------------------------ ...
- 20155213 2016-2017-2《Java程序设计》第四周学习总结
20155213 2016-2017-2<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承避免多个类间重复定义共同行为,使用关键字extends.继承表明了子类与 ...
- 20155235 2016-2017-2 《Java程序设计》第4周学习总结
20155235 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 第六章知识点: 何为继承 继承共同行为 多态与is-a 重新定义行为 抽象方法.抽象类 继承 ...
- WPF RoutedEvent and HitTest - 简书
原文:WPF RoutedEvent and HitTest - 简书 学习的时候切忌心浮气躁,慢慢的过每一个知识点,不要漏掉任何细节.不然当遇到细节问题的时候,会恼,会闹,会悔不该当初--花一下午调 ...
- HTML中CSS入门基础
HTML.CSS 实用css有三种格式:内嵌:内联:外部: 分类:内联:写在标记的属性位置,优先级最高,重用性最差内嵌:写在页面的head中,优先级第二,重用性一般外部:写在一个以css结尾的文件中, ...
- katalon系列十七:报告&Katalon Analytics
一.邮件报告Suite执行完后,严格来说这个不算报告,只是邮件通知执行结果,具体设置请看katalon系列三 二.文件报告Suite执行完后,会在项目文件夹下/Report/Suite Name/ti ...
- Appium+python HTML测试报告(2)——一份报告模板(转)
(原文:https://www.cnblogs.com/fancy0158/p/10055003.html) 适用于python3: 下载地址: 英文:https://pan.baidu.com/s/ ...
- 【ANSIBLE】ansible控制windows插件安装及运行error与解决方法
一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: https://pypi.python.org/packages/b6/ac/70 ...
- PHP性能优化 -理论篇
什么情况下,遇到了PHP性能问题? 1 PHP语法使用的不恰当 2 使用PHP语言做不了它不擅长做的事 3 用php语言连接的服务不给力 4 PHP自身的短板 5 我也不 ...
- redis memcache 比较
Redis与Memcached的区别 传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都 ...