多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读取MySQL数据代码
Jun 05 PHP
PHP开发中常用的字符串操作函数
Feb 08 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
PHP防CC攻击实现代码
Dec 29 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
php实现简单的上传进度条
Nov 17 PHP
PHP 搜索查询功能实现
Nov 29 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
php语法检查的方法总结
Jan 21 PHP
php实现根据身份证获取精准年龄
Feb 26 PHP
php 中的信号处理操作实例详解
Mar 04 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和ACCESS写聊天室(一)
2006/10/09 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
如何使用Strace调试工具
2013/06/03 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
PHP分享图片的生成方法
2018/04/25 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
MSN消息提示类
2006/09/05 Javascript
JQuery UI皮肤定制
2009/07/27 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
关于python 跨域处理方式详解
2020/03/28 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
解释一下Windows的消息机制
2014/01/30 面试题
群众路线批评与自我批评
2014/02/06 职场文书
实习生工作证明范本
2014/09/14 职场文书