Home > Backend Development > PHP Tutorial > How to use database to save session in PHP_PHP tutorial

How to use database to save session in PHP_PHP tutorial

WBOY
Release: 2016-07-15 13:32:33
Original
868 people have browsed it

PHP saves sessions as files by default, which can only be used on Windows where the file space overhead is very small. But if we use a file system on uinx or liux, the file space overhead of such a file system is very large. However, sessions must be used all the time, and a large number of users will create a lot of session files. This brings performance problems to the entire server.

On the other hand, if the server adopts a cluster method, the consistency of the session cannot be maintained, so we are ready to use a database to save the session. In this way, no matter how many servers are used at the same time, as long as the If their session is saved on a database server, the integrity of the session can be saved. Please continue reading for details on how to implement this.

By default, PHP saves sessions in file mode. We can see such a line in the PHP configuration file PHP.ini, session.save_handler="files", which means It uses files to save sessions. If we want to use databases to save sessions, we need to change it to user mode and rename it session.save_handler="use". However, this only means that we do not use files to store sessions. We also need to select the database and create the tables for the database.

To establish the database and the table structure of the database, we can use any database that PHP can use. Because the combination of PHP and mysql is the best, I will use mysql for the example. Of course, you can change the name according to your needs. database, and because mysql does not have transaction functions, it is faster than other databases. However, saving the session does not require transaction processing, so I think it is better here.

Create database, create database 'session'; Create table structure create table 'session'( id char(30) not null , 'user 'char(30), data char(3000) ,parmiry by (' id') );

PHP Save session and write PHP file

<ol class="dp-xml"><li class="alt">
<span class="tag"><</span> ?PHP  </li><li><span>$</span><span class="attribute">con</span><span> =</span><span class="attribute-value">mysql_connection</span><span>("127.0.0.1"<br />,"user" , "pass");  </span></li><li class="alt"><span>mysql_select_db("session");  </span></li><li><span>function open($save_path, $session_name)   </span></li><li class="alt"><span>{  </span></li><li><span>return(true);  </span></li><li class="alt"><span>}  </span></li><li><span>function close()   </span></li><li class="alt"><span>{  </span></li><li><span>return(true);  </span></li><li class="alt"><span>}  </span></li><li><span>function read($id)   </span></li><li class="alt"><span>{  </span></li><li><span>if($</span><span class="attribute">result</span><span> = </span><span class="attribute-value">mysql_query</span><span>("select <br />* from session where </span><span class="attribute">id</span><span>=</span><span class="attribute-value">'$id'</span><span>"))  </span></li><li class="alt"><span>{  </span></li><li><span>if($</span><span class="attribute">row</span><span> = </span><span class="attribute-value">mysql_felth_row</span><span>($result ))  </span></li><li class="alt"><span>{ return $row["data"]; }  </span></li><li><span>}  </span></li><li class="alt"><span>else  </span></li><li><span>{  </span></li><li class="alt"><span>return "";  </span></li><li><span>}  </span></li><li class="alt"><span>}  </span></li><li><span>function write($id, $sess_data)   </span></li><li class="alt"><span>{  </span></li><li><span>if($</span><span class="attribute">result</span><span> = </span><span class="attribute-value">mysql_query</span><span>("update session <br />set </span><span class="attribute">data</span><span>=</span><span class="attribute-value">'$sess_data'</span><span> where </span><span class="attribute">id</span><span>=</span><span class="attribute-value">'$id'</span><span>"))  </span></li><li class="alt"><span>{  </span></li><li><span>return true;  </span></li><li class="alt"><span>}  </span></li><li><span>else  </span></li><li class="alt"><span>{  </span></li><li><span>return false;  </span></li><li class="alt"><span>}  </span></li><li><span>}  </span></li><li class="alt"><span>function destroy($id)   </span></li><li><span>{  </span></li><li class="alt"><span>if($</span><span class="attribute">result</span><span> = </span><span class="attribute-value">mysql_query</span><span>("delete * <br />from session where </span><span class="attribute">id</span><span>=</span><span class="attribute-value">'$id'</span><span>"))  </span></li><li><span>{  </span></li><li class="alt"><span>return true;  </span></li><li><span>}  </span></li><li class="alt"><span>else  </span></li><li><span>{  </span></li><li class="alt"><span>return false;  </span></li><li><span>}  </span></li><li class="alt"><span>}  </span></li><li><span>function gc($maxlifetime)   </span></li><li class="alt"><span>{  </span></li><li><span>return true;  </span></li><li class="alt"><span>}  </span></li><li><span>session_set_save_handler("open", <br />"close", "read", "write", "destroy", "gc");  </span></li><li class="alt"><span>session_start();  </span></li><li><span>// proceed to use sessions normally  </span></li><li class="alt"><span class="tag">?></span><span> </span>
</li></ol>
Copy after login

Save it as session_user_start.PHP.

Now our PHP work of saving the session has been completed. As long as you need to use the session, save session_user_start.PHP. Include it. Note that this file must be included in the first line of the file, and then you can use it in the same way as using the session of the file.


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/446131.htmlTechArticlePHP saves sessions by default in the form of files, which only consumes very little space in the files. It can be used on Windows, but if we use uinx or liu...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template