Home Backend Development PHP Tutorial Why don't I use session_PHP tutorial

Why don't I use session_PHP tutorial

Jul 13, 2016 pm 05:36 PM
session superior No Why use exist I give up yes of consider question

 在考虑session的问题上,我最终放弃了session:
  1、原本的session是使用文件来管理的。文件系统的好坏直接影响session的性能,尤其当有几K人同时在线的时候,尤其突出。解决方法有两个:数据库和文件(使用哈希路径)。
  2、原有session的扩展性和可控制性不好。不利于结合我现有的系统。
  3、在选用数据库的时候,我并没有选择sqlite,上次我测试sqlite效率在win xp上效率没有想象中的好。

  最后我选择了myql的heap表来处理session,并且把session处理和online在线用户统计结合起来。

  下面给出代码为我的一个实例(没提供其他的细节了,具体使用要相应修改)


/**
* 处理在线用户和对session的模拟
* CREATE TABLE `webqq_session` (

`sid` char( 32 ) NOT NULL ,
`uid` mediumint( 8 ) NOT NULL ,
`username` char( 80 ) NOT NULL ,
`ismember` tinyint( 1 ) NOT NULL ,
`logintime` int( 10 ) NOT NULL ,
`activetime` int( 10 ) NOT NULL ,
PRIMARY KEY ( `sid` )
) ENGINE = HEAP DEFAULT CHARSET = gb2312
* @author:feifengxlq feifengxlq#gmail.com
* @since:2006-10-23
* @copyright:http://www.phpobject. net
* Note: The use of this file must be combined with other files: such as cookie filtering, some basic functions and database operation classes
*/
class session
{
var $mysql ;

var $cookie_id=webqq_sid;

var $session=array();

var $max_time=1200;//The default maximum time is 20 minutes

function __construct()
{
$this->mysql=new module(TB_PREX._session);//Requires external support
$this->start();
}

function start()
{
if(empty($_COOKIE[$this->cookie_id]))
{
//Initialize session
$this- >create();
}else{
                                                                                                                                                                                                                                                           ->mysql->detail(where sid=.$sid.))
                                                                                                                                                                                          this-> ;mysql->update($row,where sid=.$sid.);
                                                                ​​​}
                                                                                                                                                                                          Delete users who are not online in the database
          $ this->mysql->delete(where activetime+.$this->max_time.<.time());
}

function register($name,$value,$update= false)
{
if(array_key_exists($name,$this->session)){
$this->session[$name]=$value;
}
if ($update)$this->update();
}

function registry($name=)
{
if(empty($name)) return $this-> ;session;
if(array_key_exists($name,$this->session)){
return $this->session[$name];
}
}
//Update the session information in the database
function update()
{
$row[uid]=$this->session[uid];
$row[username]= $this->session[username];
$row[ismember]=$this->session[ismember];
$row[logintime]=$this->session[logintime];
        $row[activetime]=$this->session[activetime];
                  $this->mysql->update($row,where sid=.$this->session[sid].);
}
/*-------------------The following are private methods------------------ ------------------------------------**/
function create()
{
$nowtime=time();
$sid=md5(0.$nowtime.getip());//The getip() function needs to be defined in advance: get the customer’s IP address
setcookie($ this->cookie_id,$sid,$nowtime+3600*24);//Default 24 hours
                                                             [username]=guest;
                                $row[ismember]=0; ->add($row);//Write to database
                                                                                                                                                                                                                  



http://www.bkjia.com/PHPjc/508237.html

www.bkjia.com

true

http: //www.bkjia.com/PHPjc/508237.html

TechArticle

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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Why are the purple slashed areas in the Flex layout mistakenly considered 'overflow space'? Why are the purple slashed areas in the Flex layout mistakenly considered 'overflow space'? Apr 05, 2025 pm 05:51 PM

Questions about purple slash areas in Flex layouts When using Flex layouts, you may encounter some confusing phenomena, such as in the developer tools (d...

Does H5 page production require continuous maintenance? Does H5 page production require continuous maintenance? Apr 05, 2025 pm 11:27 PM

The H5 page needs to be maintained continuously, because of factors such as code vulnerabilities, browser compatibility, performance optimization, security updates and user experience improvements. Effective maintenance methods include establishing a complete testing system, using version control tools, regularly monitoring page performance, collecting user feedback and formulating maintenance plans.

Can JS run without H5? Can JS run without H5? Apr 06, 2025 am 09:06 AM

Is JavaScript available to run without HTML5? The JavaScript engine itself can run independently. Running JavaScript in a browser environment depends on HTML5 because it provides the standardized environment required to load and execute code. The APIs and features provided by HTML5 are crucial to modern JavaScript frameworks and libraries. Without HTML5 environments, many JavaScript features are difficult to implement or cannot be implemented.

Why can custom style sheets take effect on local web pages in Safari but not on Baidu pages? Why can custom style sheets take effect on local web pages in Safari but not on Baidu pages? Apr 05, 2025 pm 05:15 PM

Discussion on using custom stylesheets in Safari Today we will discuss a custom stylesheet application problem for Safari browser. Front-end novice...

What are the advantages of H5 page production What are the advantages of H5 page production Apr 05, 2025 pm 11:48 PM

The advantages of H5 page production include: lightweight experience, fast loading speed, and improving user retention. Cross-platform compatibility, no need to adapt to different platforms, improving development efficiency. Flexibility and dynamic updates, no audit required, making it easier to modify and update content. Cost-effective, lower development costs than native apps.

Unable to log in to mysql as root Unable to log in to mysql as root Apr 08, 2025 pm 04:54 PM

The main reasons why you cannot log in to MySQL as root are permission problems, configuration file errors, password inconsistent, socket file problems, or firewall interception. The solution includes: check whether the bind-address parameter in the configuration file is configured correctly. Check whether the root user permissions have been modified or deleted and reset. Verify that the password is accurate, including case and special characters. Check socket file permission settings and paths. Check that the firewall blocks connections to the MySQL server.

Why does using the class name style of the official website example in the element-plus project have no effect? Why does using the class name style of the official website example in the element-plus project have no effect? Apr 05, 2025 pm 07:27 PM

How to use class name style correctly in element-plus? In the process of using element-plus, many developers will encounter a problem: why in their own...

Why does a specific div element in the Edge browser not display? How to solve this problem? Why does a specific div element in the Edge browser not display? How to solve this problem? Apr 05, 2025 pm 08:21 PM

How to solve the display problem caused by user agent style sheets? When using the Edge browser, a div element in the project cannot be displayed. After checking, I posted...

See all articles