php的session锁

PHP 锁住执行中的session

今天做一个应用本来想在php处理程序期间把信息写入session 在后台执行 然后前台通过ajax进行调用查看

发现无论如何调用都要等 程序完全执行完 才会出现结果。

百度了下 原来 PHP 的session 设置了锁的功能。 (类似MYSQL锁表)

<?php
   session_start();
   $_SESSION[‘test‘] = 0;
   session_write_close();  // notice!
   sleep(5);
   echo "complete1";
?>

session_write_close(); 没错就是这个。 他可以在session操作执行完 手动关闭锁功能。(如果不这样其他PHP页面要等此页面操作完才能访问该session)

这样可以保证 3个页面并发执行的时候 都执行5秒 否则将是 5,10,15  thinkphp同样适用!!!

时间: 2024-08-25 12:07:08

php的session锁的相关文章

asp.net MVC Session锁的问题

一直在用Session,对Session锁并没有太多的关注,可能是平时没有注意.前段时间突然发现,一个Ajax Get请求,直接访问地址,只需要几十ms,但是在页面中加载,却需要2s.最后定位到Session的问题. 具体的内容我在园里看了下别人的文章:http://blog.csdn.net/paolei/article/details/38052129 不过,也发现了一些问题. 比如,这个例子: 后端: public class MyController : Controller { //

CI框架(3 or 4) session锁问题引发的讨论

角色介绍 sskaje:提起疑问者,疑似国人 narfbg:CI作者之一 sskaje:在CI3和CI4中,用来实现session的redis驱动与memcached驱动关于session key锁的设计是不对的. 估计是sskaje一针见血的表达导致了作者的第一次回复会带有不满情绪.. CI4中,代码老套,虽然更加兼容但是仍然有bugCI4中关于session锁的循环中的伪代码如下: if redis::ttl(lock_key) > 0 then sleep 1s continue loop

PHP session锁

描述: 在PHP中,当同一个客户端执行两个包含session_start()的页面,如果先执行的脚步执行时间较长,就会导致session文件阻塞.具体表现为:一个PHP页面的执行时间比较长,而只要这个页面没有执行完毕,其他的页面访问都是长时间加载状态,只有那个页面执行完毕了,剩下的页面才能打开. 原因: PHP 默认是用文件格式存储session,对于每一个请求执行包含有session_start()的页面后,就会默认创建一个包含session_id的文件名,且会对文件进行锁定,如果用户在这个客

PHP Session可能会引起并发问题

PHP Session可能会引起并发问题 在进行Web应用程序开发的时候,人们经常会用Session存储数据.但可能有人不知道,在PHP中,Session使用不当可能会引起并发问题. 如果同一个客户端并发发送多个请求,而每个请求都使用了Session,那么PHP Session锁的存在会导致服务器串行响应这些请求,而不是并行.这是因为在默认情况下,PHP使用文件存储Session数据.对于每一个新的 Session,PHP会创建一个文件,并持续向其中写入数据.所以,每次调用session_sta

php session 读写锁

php session 读写锁 先看一个样例,功能: 1.点击页面中一个button,ajax运行php,php中用session记录运行到哪一步. 2.使用ajax轮询还有一个php,获取session中数据,输出运行到哪一步. session.html 调用php运行,并输出运行到第几步 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4

oracle--事物特性、锁、

update emp set comm = 100 where empno = 7369; 使用dba用户查看事务 ADDR XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBASQN UBAREC STATUS START_TIME START_SCNB START_SCNW START_UEXT START_UBAFIL START_UBABLK START_UBASQN START_UBAREC SES_ADDR FLAG SPACE RECURSIVE NOUN

mysql基础和数据库的优化

Mysql基础... 4 Mysql介绍... 4 登录mysql mysql –u root –p[掌握]... 4 SQL语言... 4 DCL. 4 grant. 4 revoke. 4 DDL. 4 建库... 4 删库... 4 建表... 4 看表结构... 5 删表... 5 修改表... 5 DML[重点]... 5 增加... 5 删除... 5 修改... 5 查看... 5 排序... 5 总数... 5 求和... 5 平均... 6 最大... 6 最小... 6 表连

Ajax实现的长轮询不阻塞同一时间内页面的其他Ajax请求(同域请求)

最近要做一个来电的弹屏功能,利用OM 系统的接口,OM系统发送请求到接口程序,分析数据添加到mysql数据库中,然后把最新的数据id 跟今日来电的总的数量存储到memcache 中.弹屏程序根据读取的memcache 中的数据  比对,比较是不是有新的请求到来.中间遇到问题是:前台在轮询等待数据的时候,页面中的其他请求被阻塞,查了好多资料,包括 apache 的mpm 模式,都没有找到原因.后来 在论坛里边查到原因:如下 实际上是不能并发访问同一个站点使用了session的页面,因为访问A页面时

oracle日常监控语句

oracle常用的性能监控SQL语句 一.查询历史SQL: ---正在执行的SQL语句: select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea b where a.sql_address = b.address; ---查询Oracle正在执行的sql语句及执行该语句的用户:SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, s