动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

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

作者来源: 
阅读 1215 人次 , 2006-3-29 4:07:00 


首先介绍一下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文件。你可以用隐含表单的域来保存它。这样就不会有问题。欢迎来信讨论。让我们一起做得更好。

 本文Tagssession  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:PEAR简介:用PEAR来写你的下一个php程序
· 下一篇:PHP4的核心:Zend
· 实例学习PHP之投票程序篇
· 用PHP开发健壮的代码(三):编写可重用函数
· 十天学会php之第四天
· Zend Optimizer 配置指南
· PHP的面向对象编程:开发大型PHP项目的方法(三)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077