欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【多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文件。你可以用隐含表单的域来保存它。这样就不会有问题。欢迎来信讨论。让我们一起做得更好。
以上所分享的是关于多php服务器实现多session并发运行,下面是编辑为你推荐的有价值的用户互动:
相关问题:访问比较多的php站,使用session是否合适
答:session的实现过程相对较为复杂 如果你仔细地去了解过session,你就会看到在session的存储目录下,一个用户对应一个session,而且这个session是经过编码的。 读写session都会需要硬盘的读写操作,同时还有繁杂的编解码操作,另外,网站访问量大... >>详细
相关问题:php 如何使用session 让同一服务器上的2个域名同时...
答:可以做到session分发 /** * 子站点分发方法,将用户信息和对应的秘钥发送到子站点 * 子站点必须有对应的方法 */ public function distributeCheckLogin(){ //多个站点发送 foreach($this->urlMap as $key=>$val){ $data['userInfo'] = $_SESSION... >>详细
相关问题:php中session如何管理多用户登录
答:不用担心,系统为每个访问者都设立一个独立的Session对象,用以存储Session变量,并且各个访问者的Session对象互不干扰。 session的id(Session的代号)通过session_id()方法直接获龋 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
