1. session 临时文件
在服务器中,如果将所有用户的 session 都保存到临时目录中,会降低服务器的安全性和效率,打开服务器存储的站点会非常慢。在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,如果说并发访问很大或者 session建立太多,目录下就会存在大量类似sess_xxxxxx的session文件,同一个目录下文件数过多会导致性能下降,并且可能导致受到 攻击最终出现文件系统错误。针对这样的情况,PHP本身体提供了比较好的解决办法。在php中,使用函数 session_save_path() 可以解决这个问题。
使用php函数 session_save_path() 存储 session 临时文件,可以缓解因临时文件的存储导致服务器效率降低和站点打开缓慢的问题,其实例代码如下所示:
<?php $path = './tmp/'; //设置 session 存储路径 session_save_path($path); session_start(); $_SESSION['username'] = true; ?>
注意: session_save_path() 函数应在 session_start()函数之前调用。
2. session 缓存
session 缓存 是将网页中的内容临时存储到 客户端 的 Temporary Internet Files 文件夹下,并且可以设置缓存时间。当第一次浏览网页后,页面的部分内容在规定的时间内就被临时存储在客户端的临时文件夹中,这样在下次访问这个页面的时候,就可以直接读取缓存中的内容,从而提高网站的浏览效率。
Session缓存的作用
(1) 减少访问数据库的频率。应用程序从缓存中读取持久化对象的速度显然优于从数据库中检索数据的速度。
(2) 当缓存中的持久化对象之间存在循环关联关系时,Session会保证不出现访问对象图的死循环,以及由死循环引发的JVM堆栈溢出。
(3) 保证数据库中的相关记录与缓存中的记录同步。Session在清理缓存的时,会自动进行脏数据检查(dirty-check),如果发现Session缓存中的对象与数据库中相应记录不一致,则会按最新的对象属性更新数据库。
session 缓存使用的是 session_cache_limiter()函数,其语法格式如下:
session_cache_limiter(cache_limiter)
参数 cache_limiter 为 public 或者 private。 同时 session 缓存 并不是指在服务器端而是在客户端缓存,在服务器中没有显示
缓存时间的设置,使用的是 session_cache_expire()函数,其语法格式如下:
session_cache_expire(new_cache_expire);
参数cache_expire 是 session 缓存的时间,单位为分钟。
注意:这两个 session 缓存函数必须在 session_start()函数之前调用,否则会出错。
下面通过实例了解 session 缓存页面过程,其实现的代码如下所示:
<?php session_cache_limiter('private'); $cache_limit = session_cache_limiter(); //开启客户端缓存 session_cache_expire(30); $cache_expire = session_cache_expire(); //设定客户端缓存时间 session_start(); ?>
以上是php中session临时文件和缓存说明的详细内容。更多信息请关注PHP中文网其他相关文章!