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

绒绒heaven

绒绒heaven

2016-01-29 14:54

多php服务器实现多session并发运行,多php服务器实现多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文件。你可以用隐含表单的域来保存它。这样就不会有问题。欢迎来信讨论。让我们一起做得更好。
 
展开更多 50%)
分享

猜你喜欢

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

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

WINDOWS服务器安装多套PHP

PHP
WINDOWS服务器安装多套PHP

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用网络地址转换实现多服务器负载均衡

Web开发
使用网络地址转换实现多服务器负载均衡

WINDOWS服务器安装多套PHP的另类解决方案

PHP
WINDOWS服务器安装多套PHP的另类解决方案

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

运行多个MYSQL服务器

编程语言 网络编程
运行多个MYSQL服务器

运行headless Java服务器

编程语言 网络编程
运行headless Java服务器

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何在PHP中使用Oracle数据库(3)

如何在PHP中使用Oracle数据库(3)

《大话来了》攻略之宠物强化心得

《大话来了》攻略之宠物强化心得
下拉加载更多内容 ↓