做网站宁波有什么的网络公司,简易html个人介绍网页,pscc下载,网络营销方法PHP保存session默认的是采用的文件的方式来保存的#xff0c;这仅仅在文件的空间开销很小的windows上是可以采用的#xff0c;但是如果我们采用 uinx或者是liux上的文件系统的时候#xff0c;这样的文件系统的文件空间开销是很大的#xff0c;然而session是要时时刻刻的使用…PHP保存session默认的是采用的文件的方式来保存的这仅仅在文件的空间开销很小的windows上是可以采用的但是如果我们采用 uinx或者是liux上的文件系统的时候这样的文件系统的文件空间开销是很大的然而session是要时时刻刻的使用的大量的用户就要创建很多的 session文件这样对整个的服务器带来性能问题。另一方面如果服务器起采用群集的方式的话就不能保持session的一致性所以我们就绪要采用数据库的方式来保存session这样不管有 几台服务器同时使用只要把他们的session保存在一台数据库服务器上就可以保证session的完整了具体如何来实现请继续看下去。PHP保存session默认的情况下是采用的文件方式来保存的我们在PHP的配制文件PHP.ini中可以看到这样的一行复制代码 代码如下:session.save_handlerfiles这样的意思就是采用文件来保存session 的要采用数据库来保存的话我们需要修改成用户模式改成复制代码 代码如下:session.save_handleruse就可以了但是这仅仅是说明我门没有采用文件的方式存储session我们还要选择数据库和建立数据库的表。建立数据库和数据库的表结构我们可以采用PHP可以使用的任何的数据库因为PHP和mysql的结合最好我就使用mysql来做示例当然根据你的需要可以改称别的数据库。创建数据库复制代码 代码如下:create database session;创建表结构复制代码 代码如下:create table session( id char(32) not null , user char(30), data char(3000) ,primary key (id) );PHP保存session编写PHP文件复制代码 代码如下:$con mysql_connect(127.0.0.1, user , pass);mysql_select_db(session);function open($save_path, $session_name) {return(true);}function close() {return(true);}function read($id) {if ($result mysql_query(select * from session where id$id)) {if ($row mysql_felth_row($result)) {return $row[data];}} else {return ;}}function write($id, $sess_data) {if ($result mysql_query(update session set data$sess_data where id$id)) {return true;} else {return false;}}function destroy($id) {if ($result mysql_query(delete * from session where id$id)) {return true;} else {return false;}}function gc($maxlifetime) {return true;}session_set_save_handler(open, close, read, write, destroy, gc);session_start();// proceed to use sessions normally保存成为session_user_start.php。现在我们的PHP保存session的工作就已经完成了只要你在需要在使用session的时候把session_user_start.php包含进来.注意这个文件一定要在文件的第一行包含然后就像使用文件的session一样的方法使用就可以了。以上仅仅是个简单教程在实际的应用中可以对它封装得更专业些参考代码如下SessionMysql.class.php复制代码 代码如下:/*** SessionMysql 数据库存储类*/defined(IN_QIAN) or exit(Access Denied);class SessionMysql {public $lifetime 1800; // 有效期单位秒(s)默认30分钟public $db;public $table;/*** 构造函数*/public function __construct() {$this-db Base::loadModel(SessionModel);$this-lifetime Base::loadConfig(system, session_lifetime);session_set_save_handler(array($this, open), // 在运行session_start()时执行array($this, close), // 在脚本执行完成 或 调用session_write_close() 或 session_destroy()时被执行即在所有session操作完后被执行array($this, read), // 在运行session_start()时执行因为在session_start时会去read当前session数据array($this, write), // 此方法在脚本结束和使用session_write_close()强制提交SESSION数据时执行array($this, destroy), // 在运行session_destroy()时执行array($this, gc) // 执行概率由session.gc_probability 和session.gc_divisor的值决定时机是在openread之后session_start会相继执行openread和gc);session_start(); // 这也是必须的打开session必须在session_set_save_handler后面执行}/*** session_set_save_handler open方法** param $savePath* param $sessionName* return true*/public function open($savePath, $sessionName) {return true;}/*** session_set_save_handler close方法** return bool*/public function close() {return $this-gc($this-lifetime);}/*** 读取session_id** session_set_save_handler read方法* return string 读取session_id*/public function read($sessionId) {$condition array(where array(session_id $sessionId),fields data);$row $this-db-fetchFirst($condition);return $row ? $row[data] : ;}/*** 写入session_id 的值** param $sessionId 会话ID* param $data 值* return mixed query 执行结果*/public function write($sessionId, $data) {$userId isset($_SESSION[userId]) ? $_SESSION[userId] : 0;$roleId isset($_SESSION[roleId]) ? $_SESSION[roleId] : 0;$grouId isset($_SESSION[grouId]) ? $_SESSION[grouId] : 0;$m defined(ROUTE_M) ? ROUTE_M : ;$c defined(ROUTE_C) ? ROUTE_C : ;$a defined(ROUTE_A) ? ROUTE_A : ;if (strlen($data) 255) {$data ;}$ip get_ip();$sessionData array(session_id $sessionId,user_id $userId,ip $ip,last_visit SYS_TIME,role_id $roleId,group_id $grouId,m $m,c $c,a $a,data $data,);return $this-db-insert($sessionData, 1, 1);}/*** 删除指定的session_id** param string $sessionId 会话ID* return bool*/public function destroy($sessionId) {return $this-db-delete(array(session_id $sessionId));}/*** 删除过期的 session** param $lifetime session有效期(单位秒)* return bool*/public function gc($lifetime) {$expireTime SYS_TIME - $lifetime;return $this-db-delete(last_visit}}在系统文件的某个地方实例化这个类即可复制代码 代码如下:new SessionMysql();