- 浏览: 564935 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (233)
- CSS (12)
- J2SE学习 (16)
- J2EE (6)
- JavaScript (38)
- Struts 1.x (2)
- SQL (9)
- Hibernate (5)
- TYPO3 (1)
- Mysql (10)
- Drupal (14)
- 生活 (10)
- PHP (40)
- Linux (15)
- 口语 (2)
- Magento (8)
- Dotnet (2)
- 正则 (2)
- Android ADB shell (1)
- Android (7)
- HTTP (4)
- Android API (2)
- eclipse (1)
- JAVA (4)
- 数据结构 (3)
- 集合 (1)
- IoC(反向控制) (2)
- 设计模式 (3)
- WebView (2)
- 算法 (6)
- smsniff (1)
- VIM (7)
- iOS (4)
- gcc (2)
- xcode (1)
- Mac (5)
- opencv (3)
- cmake (2)
- git (1)
- html5 (1)
- audio (1)
- apache (3)
- shell (1)
- 工作感悟 (1)
最新评论
-
jiyilee:
的确,不少命令都不能用,不方便啊。。
Apple:如何在iphone、ipad上安装一些常用命令行命令 -
idong杨:
[url][url][url][url][url][/url] ...
php中将SimpleXMLElement Object数组转化为普通数组 -
idong杨:
...
php中将SimpleXMLElement Object数组转化为普通数组 -
wcily123:
递归删除指定目录下的.git文件find . -name .g ...
Linux上批量删除.svn目录 -
yilinsitian:
受教了,好像Socket通信超时机制 还没有说吧
Android·HTTP超时机制
关于登录超时,自动退出页面的问题!
我的做法是: 通过Session 控制
失败1:在 php.ini 中设定 session 失效的时间,我设置session.gc_maxlifetime为180,可是我等了足足5分钟(可能有8分钟),可是我依然能进入系统.设置后有重启linux.
失败2:在 程序中插入函数 ini_set('session.gc_maxlifetime',180);(session_start前加入),超时后依然能进入.
一开始我也不是很明白,想当然的以为这个是用来控制Session文件的.这里设置的时间,过期后,/tmp/sess_*的文件就会自动删除.
后来自己做了一下测试好象也不行.
看文档发现,在session的configure option中有三个关于gc的,分别是:
session.gc_probability "1" PHP_INI_ALL
session.gc_divisor "100" PHP_INI_ALL Available since PHP 4.3.2.
session.gc_maxlifetime "1440" PHP_INI_ALL
咱们一个个看.
首先 gc是什么?
gc, 是garbage collection 的简称.这个进程一般都跟着每起一个SESSION而开始运行的.gc目的是为了在session文件过期以后自动销毁删除这些文件. 大家应该猜到三个参数的大致用处了吧?
1、session_gc_probaility
PHP默认不是每个SESSION启动都会启动一个GC来跟踪。这个参数是控制gc跟session启动概率。默认 1。值越大,概率越大。
2、session.gc_divisor
功能同上。 默认100。值越小,概率越大。
3、session.gc_maxlifetime
超过设定时间,gc就认为是垃圾文件。
总结
session_gc_probaility和session.gc_divisor是一对控制gc启动的概率的两个参数。前者是分子,后者是分母。默认是1/100。 1%的几率。 也就是说100个请求中只有一个gc会伴随100个中的某个请求而启动。
而关于SESSION 过期大家也应该有更明确的认识
只有session.cookie_lifetime 控制SESSIOn的过期时间.
可以通过直接修改ini,或者通过ini_set();以及session_set_cookie_params()来修改。
这种情况下,gc的最大过期时间比 Session的过期时间短,但是还是按照session的过期时间过期。
注意: WEB是触发式的。所以在你直接关闭IE的情况下,session文件也是依然会存在的。
注意:
1、session默认以文件方式保存,不过太多的session在一个目录下是不利于存取的。php.ini里面有个设置可以让session分子目录保存
session.save_path = "N;/path" N表示几级子目录,比如你可以设置成 session.save_path = "2;/tmp"
但是你设置成分子目录后,原来的garbage collection 就没用了,需要你自己去清楚过期session,比如用个shell定时执行。
(以上内容大家仔细看看php.ini里面的注释就知道了)
2、很多人都习惯在php程序的头部打开session就不管它了,程序结束会自动关闭session的。不过从性能上考虑session应该尽早关闭,特别是多于执行时间比较长的程序。因为session文件在打开的时候是独占的,比如a.php打开了的session文件后并不关闭,而本身程序要执行比较长时间。同时你打开了b.php也是需要session的,就要等a.php执行完才能打开了。
所以建议a.php预先处理好session,然后关闭它,在执行其他功能。
我的做法是: 通过Session 控制
失败1:在 php.ini 中设定 session 失效的时间,我设置session.gc_maxlifetime为180,可是我等了足足5分钟(可能有8分钟),可是我依然能进入系统.设置后有重启linux.
失败2:在 程序中插入函数 ini_set('session.gc_maxlifetime',180);(session_start前加入),超时后依然能进入.
一开始我也不是很明白,想当然的以为这个是用来控制Session文件的.这里设置的时间,过期后,/tmp/sess_*的文件就会自动删除.
后来自己做了一下测试好象也不行.
看文档发现,在session的configure option中有三个关于gc的,分别是:
session.gc_probability "1" PHP_INI_ALL
session.gc_divisor "100" PHP_INI_ALL Available since PHP 4.3.2.
session.gc_maxlifetime "1440" PHP_INI_ALL
咱们一个个看.
首先 gc是什么?
gc, 是garbage collection 的简称.这个进程一般都跟着每起一个SESSION而开始运行的.gc目的是为了在session文件过期以后自动销毁删除这些文件. 大家应该猜到三个参数的大致用处了吧?
1、session_gc_probaility
PHP默认不是每个SESSION启动都会启动一个GC来跟踪。这个参数是控制gc跟session启动概率。默认 1。值越大,概率越大。
2、session.gc_divisor
功能同上。 默认100。值越小,概率越大。
3、session.gc_maxlifetime
超过设定时间,gc就认为是垃圾文件。
总结
session_gc_probaility和session.gc_divisor是一对控制gc启动的概率的两个参数。前者是分子,后者是分母。默认是1/100。 1%的几率。 也就是说100个请求中只有一个gc会伴随100个中的某个请求而启动。
而关于SESSION 过期大家也应该有更明确的认识
只有session.cookie_lifetime 控制SESSIOn的过期时间.
可以通过直接修改ini,或者通过ini_set();以及session_set_cookie_params()来修改。
<?php ini_set("session.gc_divisor", 1); ini_set("session.gc_maxlifetime", 5); ini_set("session.cookie_lifetime", 10); session_start(); if (isset($_SESSION['test'])) { echo SESSION_ID(); echo "<br>"; echo $_SESSION['test']; } else { $_SESSION['test'] = date("Y-M-D H:i:s"); } echo "<br>"; echo ini_get("session.gc_maxlifetime"); echo "<br>"; echo ini_get("session.cookie_lifetime"); ?>
这种情况下,gc的最大过期时间比 Session的过期时间短,但是还是按照session的过期时间过期。
注意: WEB是触发式的。所以在你直接关闭IE的情况下,session文件也是依然会存在的。
注意:
1、session默认以文件方式保存,不过太多的session在一个目录下是不利于存取的。php.ini里面有个设置可以让session分子目录保存
session.save_path = "N;/path" N表示几级子目录,比如你可以设置成 session.save_path = "2;/tmp"
但是你设置成分子目录后,原来的garbage collection 就没用了,需要你自己去清楚过期session,比如用个shell定时执行。
(以上内容大家仔细看看php.ini里面的注释就知道了)
2、很多人都习惯在php程序的头部打开session就不管它了,程序结束会自动关闭session的。不过从性能上考虑session应该尽早关闭,特别是多于执行时间比较长的程序。因为session文件在打开的时候是独占的,比如a.php打开了的session文件后并不关闭,而本身程序要执行比较长时间。同时你打开了b.php也是需要session的,就要等a.php执行完才能打开了。
所以建议a.php预先处理好session,然后关闭它,在执行其他功能。
发表评论
-
UTF-8编码问题编码长度问题
2013-07-22 11:46 5733UTF-8编码问题编码长度问题 UTF-8经常被用于文本文 ... -
Linux 快速安装 LAMP环境
2012-08-20 11:47 5065Linux 快速安装 LAMP环境 #检查一下系统更新 ... -
在命令行下运行 PHP 脚本
2012-08-10 19:06 1060<?php fwrite(STDOUT, &quo ... -
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2012-08-10 15:26 1366POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的 ... -
深入理解ob_flush和flush的区别
2012-08-09 15:45 1140[转] http://www.laruence.com/201 ... -
[转]OS X Mountain Lion 系统配置 Apache+Mysql+PHP 详细教程
2012-08-09 11:49 1204OS X Mountain Lion 系统配置 ... -
PHP file_get_contents 获取请求返回头信息
2012-07-06 19:57 4593PHP file_get_contents 获取请求返回头信息 ... -
vim lookupfile插件tagfile 生成
2012-06-04 09:29 2317<?php /** 命令 :l ... -
php中将SimpleXMLElement Object数组转化为普通数组
2012-02-27 18:22 33441php中将SimpleXMLElement Object数组转 ... -
PHP 修改HTTP头 --Modify HTTP Headers
2011-11-25 11:50 1741Modify HTTP Headers // See rel ... -
Redis 常用命令 (php)
2011-05-28 13:25 2584Redis常用命令一 2011年05 ... -
一道很纠结的php面试题
2011-04-27 14:22 1010$a = 1; $b = 'a'; $a = ... -
PHP的小技巧[转]
2011-04-26 14:00 877PHP的小技巧 好象,大多时候,我们对于字符串的比较都是采用 ... -
服务器状态代码含义
2011-04-25 01:36 846服务器状态代码含义 ... -
$_SERVER变量的中文翻译
2011-04-25 00:59 1045服务器变量 $_SERVER 详解: 1、$_SESSION ... -
何为RBAC
2011-04-24 22:18 1362角色访问控制(RBAC)引入了Role的概念,目的是为了隔离U ... -
PHP负载均衡
2011-04-24 22:07 916过去当运行一个大的web应用时候意味着运行一个大型的web服务 ... -
PHP去除数组中的空值
2011-04-24 21:17 1218foreach( $arr as $k=>$v){ ... -
PHP 中的stdClass概述
2011-04-24 20:43 866很多php程序员用它来传递一系列变量的值,而同时又懒得去创建一 ... -
PHP字符串三种定义方式
2011-04-24 20:12 6908PHP的字符串有三种定义方式:单引号 、双引号 、定界符 ...
相关推荐
在IT领域,尤其是在Web开发中,`session`是一种非常重要的技术,用于跟踪用户的状态和信息。`session`机制允许服务器端存储用户特定的数据,以便在多个页面请求之间保持上下文。下面我们将深入探讨`session`的工作...
一个已知管用的方法是,使用session_set_save_handler,接管所有的session管理工作,一般是把session信息存储到数据库,这样可以通过SQL语句来删除所有过期的session,精确地控制session的有效期。这也是基于PHP的...
如果你希望更精确地控制session过期,你可以调整`session.gc_probability`和`session.gc_divisor`的值,例如,将`session.gc_divisor`设为1,使得每次请求都进行GC检查。但这样做可能会增加服务器的负担,因为GC过程...
- 当 `session_start()` 被调用时,如果设置了 `session.gc_probability` 和 `session.gc_divisor`,则有一定概率触发 Session 数据的清理操作。 #### 三、自定义Session存储方式 1. **使用 `session_set_save_...
2. **session.gc_maxlifetime**: 设置Session数据的最大存活时间。 3. **session.save_path**: 指定Session数据的存储路径。 4. **session.name**: 设置Session的名称。 5. **session.use_cookies**: 是否使用Cookie...
要解决这个问题,需要在代码中判断当前Session的生存时间,如果超出了gc maxlifetime,就清空当前Session。或者,可以提高`session.gc_probability`和`session.gc_divisor`的值,以增加GC的可能性。 另外,PHP的...
比如,如果设置 `session.gc_probability = 1` 和 `session.gc_divisor = 100`,则每 100 次 `session_start()` 调用中有 1 次会触发垃圾回收。 - **session.gc_maxlifetime**:设置 Session 数据的有效时间(秒),...
4. **调整`session.gc_probability`和`session.gc_divisor`**:这两个配置项用于控制垃圾回收(GC)的概率。增大`gc_probability`或减少`gc_divisor`可以提高GC运行的频率,从而更快地清理过期session。然而,频繁的...
3. `session.gc_maxlifetime` 也设置为一个大值,如99999999,确保服务器端Session数据长时间保存。 如果无法直接修改`php.ini`,也可以通过程序逻辑来实现Session永不过期。一种方法是使用Cookie来持久化Session ...
例如,可以设置`session.save_path`来指定Session数据的存储路径,`session.cookie_lifetime`来设定Cookie的生命周期,`session.gc_maxlifetime`来设定Session数据在服务器上的存活时间等。 3. **自定义Session处理...
- **设置适当的 Session 过期时间**:通过 `ini_set('session.gc_maxlifetime', 1440)` 来设置 Session 的最大生存时间。 #### 五、总结 Session 是 PHP 中非常重要的一个功能,它能够帮助开发者在多次请求之间...
3. **session管理**:由于memcache本身不处理session过期和清理,所以需要在PHP代码中设定合适的session生命周期(`session.cookie_lifetime`和`session.gc_maxlifetime`)以及定期清理策略。 4. **处理并发问题**...
9. **session.gc_probability** 和 **session.gc_divisor**:这两个参数一起控制Session的垃圾收集机制。gc_probability是发生垃圾收集的概率,gc_divisor是概率发生的基数。默认情况下,1/1000的概率进行垃圾收集。...
- **session**:由服务器控制,通过`session.gc_maxlifetime`配置项设置,默认24分钟。如果用户关闭浏览器,session通常会结束,除非服务器有额外机制保持session活跃。 - **cookie**:由开发者定义,可以设置过期...
你可以通过`session.gc_maxlifetime`设置session过期时间(单位为秒)。例如,设置为30分钟: ```ini session.gc_maxlifetime = 1800 ``` ### 总结 正确理解和使用PHP中的session是构建动态、交互式Web应用的基础...
调整`session.gc_probability`和`session.gc_divisor`配置可改变这一概率。 4. **Server配置**:不同的服务器环境可能有不同的配置,比如Apache与Nginx,它们对session的处理方式可能有差异。确保服务器配置与PHP...
`session.gc_probability`和`session.gc_divisor`决定何时清理过期Session。 5. **生命周期**:Session数据的生命周期可以通过`session_set_cookie_params()`或`ini_set()`函数设置。当Session过期,服务器会自动...
1.php session 有效期 PHP的session有效期默认是1440秒(24分钟),如果客户端超过24分钟没有刷新,当前session会被回收,失效。 当用户关闭浏览器,会话结束,session也会...2.session.gc_maxlifetime,session.gc_prob