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


Posted in PHP onOctober 09, 2006

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

PHP 相关文章推荐
PHP内核介绍及扩展开发指南―基础知识
Sep 11 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
php获取系统变量方法小结
May 29 PHP
php实现点击可刷新验证码
Nov 07 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
May 20 PHP
Laravel中间件实现原理详解
Oct 09 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 PHP
php+ajax实现文件切割上传功能示例
Mar 03 PHP
提升PHP速度全攻略
Oct 09 #PHP
php4的彩蛋
Oct 09 #PHP
在PHP中使用灵巧的体系结构
Oct 09 #PHP
PHP脚本的10个技巧(8)
Oct 09 #PHP
用PHP实现小型站点广告管理
Oct 09 #PHP
一个域名查询的程序
Oct 09 #PHP
PHP脚本的10个技巧(7)
Oct 09 #PHP
You might like
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
js三种排序算法分享
2012/08/16 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
Python的time模块中的常用方法整理
2015/06/18 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
python绘制多个曲线的折线图
2020/03/23 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
HTML5新增加的功能详解
2016/09/05 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
升旗仪式主持词
2014/03/19 职场文书
银行内勤岗位职责
2014/04/09 职场文书
新闻发布会策划方案
2014/06/12 职场文书
高考升学宴主持词
2019/06/21 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
分析设计模式之模板方法Java实现
2021/06/23 Java/Android