php实现多session并发运行

session

首先介绍一下session的概念:

  所谓session是微软首先提出的,在asp中最先集成。由于session的采用,大大方便了web开发员的工作。一时间asp风靡全球。现在php4也加入session的支持,再度显示出open source 的强大力量。和Cookie类似,设计Session的目的也是为了在一个访问期间在不同的页面间传输数据以解决http协议无状态的问题,但Session更加简单、更加安全。Session 中文没有一个统一的译法,我习惯上译为会话。关于session的意义大家都应该清楚: 其实是在浏览某个网站时,在浏览器没有关闭的情形之下,一个web应用的开始和结束。一个session可以包括数次http的请求和应答,比如我们用freemail.263.net,从login到logout或者超时就作为一个session 的生存期。每一个被创建的Session都有一个唯一的标识串,叫session ID , 这个串被发送到客户端,同时在服务器端也生成了同样唯一的标识串入口,这个标识串或者放在文本文件中,或者放在一个数据库中。然后程序可以在这个sessionID下注册一些Session 变量。这些变量如同一般的变量一样可以保存文本或数值信息,可以通过Session被读出或写入。 session 的唯一标识一般是在系统内部唯一的session ID,一般是一个挺长的字符串。

问题的提出:

  解了session概念后,我在为我单位编写一个进销存系统中发现需要让多个用户可以同时进入一个php应用程序。原来设计的静态的唯一的session ID导致数据混乱。这样,动态生成一个唯一的session ID成为当务之急。

  解决办法很简单:我用了php文件名+时间戳为唯一的session ID,这样在我的程序中的每个session就各就各位,不再混乱了。
下面把我的源代码公布,方便也有同样的问题的朋友多一个解决方法。

//Start a PHP session to preserve variables.
      if ( empty($mysessionname) ) {
         $micro = microtime();
         $micro = str_replace(" ","",$micro); // strip out the blanks
         $micro = str_replace(".","",$micro); // strip out the periods
         $mysessionname = "po_maint" . $micro;
      }
      session_name($mysessionname);
      session_start();

程序注释:

  我用mysessionname为页面间唯一的sessionname传递变量,如果你也用到这个名字必须把上述程序做个小小的改动。Mysessionname不能为session的内部变量名,因为他在session开始之前就已经存在了。Mysessionname也不能用cookie方式存放,因为多个session肯定会覆盖掉原先的cookie文件。你可以用隐含表单的域来保存它。这样就不会有问题。欢迎来信讨论。让我们一起做得更好。

时间: 2024-08-22 14:40:51

php实现多session并发运行的相关文章

多php服务器实现多session并发运行

session|服务器 首先介绍一下session的概念: 所谓session是微软首先提出的,在asp中最先集成.由于session的采用,大大方便了web开发员的工作.一时间asp风靡全球.现在php4也加入session的支持,再度显示出open source 的强大力量.和Cookie类似,设计Session的目的也是为了在一个访问期间在不同的页面间传输数据以解决http协议无状态的问题,但Session更加简单.更加安全.Session 中文没有一个统一的译法,我习惯上译为会话.关于s

多php服务器实现多session并发运行_php基础

首先介绍一下session的概念: 所谓session是微软首先提出的,在asp中最先集成.由于session的采用,大大方便了web开发员的工作.一时间asp风靡全球.现在php4也加入session的支持,再度显示出open source 的强大力量.和Cookie类似,设计Session的目的也是为了在一个访问期间在不同的页面间传输数据以解决http协议无状态的问题,但Session更加简单.更加安全.Session 中文没有一个统一的译法,我习惯上译为会话.关于session的意义大家都

方法-java怎么用多线程并发运行for?

问题描述 java怎么用多线程并发运行for? 如果把下面的改成十个线程并发运行不同的for语句,,就我最下面写好的那个方法,参数用定义好的数组里面的十个int变量,请问要怎么写? public static void main(String[] args) { for(Thread t:getThreads()){ t.start(); } } public static Thread[] getThreads(){ Thread[] thread = new Thread[10]; for(

PHP session并发及session读写锁分析

PHP这门程序设计语言简单得令人发指,那是因为PHP的作者们太神通.今天我来谈谈所有的phper都熟悉的session(会话). 需要说明的是: 1.示例代码中分别以files,redis储存会话数据 2./session/setUserFile和/session/setUserRedis设置user_name,user_id两个key,并sleep了3s 3./session/setLoginFile和/session/setLoginRedis设置last_time一个key 4./sess

ASP.NET MVC4.0 session并发锁问题

问题描述 在ASP.NETMVC4.0控制器中写入session,默认在多个异步请求的情况下,会变成单线程排队处理的方式,导致其中一个处理慢,其它请求排队等待响应的情况此时在控制器头部声明[SessionState(SessionStateBehavior.ReadOnly)],这个时候可以处理并发请求但是不能写入sessionASP.NETForm可以随意多并发请求,写入Session的为什么MVC做了限制? 解决方案 解决方案二:用MVC5的话,就简单了,直接把控制器修饰为async就可以了

PHP中session详解

session|详解 综述 Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.从上述的定义中我们可以看到,Session实际上是一个特定的时间概念. 一般来说,在网站上某一个页面中的变量(指服务器端变量,下同)是不能在下一页中用的,有了session就好办了.session中注册的变量可以作为全局变量使用.这样我们就可以将session用于用户身份认证,程序状态记录,页面之间参数传递. 在PHP3版本中是如何实现session

PHP开发中session应用详解

session|详解     Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.从上述的定义中我们可以看到,Session实际上是一个特定的时间概念. 一般来说,在网站上某一个页面中的变量(指服务器端变量,下同)是不能在下一页中用的,有了session就好办了.session中注册的变量可以作为全局变量使用.这样我们就可以将session用于用户身份认证,程序状态记录,页面之间参数传递. 在PHP3版本中是如何实现sessio

php session的锁和并发_php技巧

本文分享PHP的session在使用过程中的锁和并发的问题,与之相关的现象有请求阻塞.session数据丢失.session数据读不到. 我登录不了了 某天,我准备登录我们一个后台系统,前去解决一个bug,在账户密码验证码都准确输入的情况下,我登录不上,经过多次实验发现主要有两个错误信息: csrf验证失败 验证码错误[我对码神起誓我用半角输入了我看到的验证码,且顺序一致,无多加字符] 我们的系统我们的系统是基于phalcon 2.0.8 开发的,如你所见,我们在表单域加入了防止csrf攻击的域

浅析PHP中Session可能会引起并发问题_php技巧

在进行Web应用程序开发的时候,人们经常会用Session存储数据.但可能有人不知道,在PHP中,Session使用不当可能会引起并发问题.印度医疗行业软件解决方案提供商Plus91 Technologies高级工程师Kishan Gor在个人博客上对这个问题进行了阐释. 如果同一个客户端并发发送多个请求,而每个请求都使用了Session,那么PHP Session锁的存在会导致服务器串行响应这些请求,而不是并行.这是因为在默认情况下,PHP使用文件存储Session数据.对于每一个新的Sess