<?php

 function userSessionBegin() {
echo '<br>Begin<br>';
//初始化数据库服务器连接,这个函数是最先执行,所以,以下的几个函数都用到数据库连接,所以,我就把它放在最先执行的函数里面,因为只要是数据库连接了,在整个文件中都有效。
$link = mysql_connect('127.0.0.1:3306', 'root', '1234abcd');
mysql_query('set names utf8');
mysql_query('use `php34`');
}
function userSessionEnd() {
echo '<br>End<br>';
return true;
}
/**
* 读操作
* 执行时机: session机制开启程中执行
* 工作: 从当前session数据区读取内容
* @param $sess_id string
* @return string
*/
function userSessionRead($sess_id) {
echo '<br>Read<br>';
//查询
$sql = "SELECT session_content FROM `session` WHERE session_id='$sess_id'";
$result = mysql_query($sql);
if ($row = mysql_fetch_assoc($result)) {
return $row['session_content'];
} else {
//没有找到,返回空字符串
return '';
}
}
/**
* 写操作
* 执行时机: 脚本周期结束时,PHP在整理收尾时
* 工作: 将当前脚本处理好的session数据,持久化存储到数据库中!
* @param $sess_id string
* @param $sess_content string 序列化好的session内容字符串
* @return bool
*/
function userSessionWrite($sess_id, $sess_content) {
echo '<br>Write<br>';
// 完成写,这里的REPLACE和INSERT一样,都是要是数据存在,就不写了,要是数据不在,就写进数据库
$sql = "REPLACE INTO `session` VALUES ('$sess_id', '$sess_content', unix_timestamp())";
// $sql = "INSERT INTO `session` VALUES ('$sess_id', '$sess_content') ON DUPLICATE KEY UPDATE session_content='$sess_content', last_time=unix_timestamp()"
return mysql_query($sql);
}
/**
* 删除操作
* 执行时机: 调用了session_destroy()销毁session过程中被调用
* 工作: 删除当前session的数据区(记录)
* @param $sess_id string
* @return bool
*/
function userSessionDelete($sess_id) {
echo '<br>Delete<br>';
//删除
$sql = "DELETE FROM `session` WHERE session_id='$sess_id'";
return mysql_query($sql);
}
/**
* 垃圾回收操作
* 执行时机: 开启session机制时,有概率的执行
* 工作: 删除那些过期的session数据区
* @param $max_lifetime
* @return bool
*/
function userSessionGC($max_lifetime) {
echo '<br>GC<br>';
//删除
$sql = "DELETE FROM `session` WHERE last_time<unix_timestamp()-$max_lifetime";
return mysql_query($sql);
} // 设置
session_set_save_handler(
'userSessionBegin',
'userSessionEnd',
'userSessionRead',
'userSessionWrite',
'userSessionDelete',
'userSessionGC'
);
ini_set('session.save_handler', 'user');

78)PHP,编写session存储机制(将数据写进数据库)的代码整理(未实验)的更多相关文章

  1. c#逐行分元素读取记事本txt数据写进数据库

    其实这里最关键的一个方法是 StreamReader类里的 ReadLine();这个方法可以逐行读取txt流里面的数据.写了个简单的demo,已经加上了详细的注释说明.   ok,好了,不废话,下面 ...

  2. Java将数据写进excel

    Java将数据写进excel Java将数据写进excel class User { private String name ; private String password; public Use ...

  3. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 将文本文件(csv)数据导进数据库

    第二节 将文本文件数据导进数据库 该小节介绍如何用BIML生成ssis包,将货币文本导入到数据库currency的表中. SSIS组件: Connection Manager组建管理connectio ...

  4. Session 知识点再整理(二) 自定义 Session 存储机制

    对于访问量大的网站,用默认的 Session 存储方式(以文件存储)不适合,因为文件的 I/O 开销会非常大,另外 Session 机制本身使 Session 不能跨机访问,在 Web 集群中无法达到 ...

  5. [PHP]自定义session存储机制的两种方案

    ---------------------------------------------------------------------------------------------------- ...

  6. java 将数据写进文件

    /*每次只写入一行数据 只需要调用特定的方法即可.*/package com.second.File;import java.io.*;/** * Created by hasee on 2016/1 ...

  7. (Java和C++)二进制date数据写进android保存为yuv格式

    Java实现函数: String strpath = "/storage/emulated/0/DCIM/" +  i + "output.yuv"; bool ...

  8. C#里如何把一个DataTable的数据追加进数据库里的某个表

    方法一: DataTable table = new DataTable(); //TODO: init table... string connStr = "user id=" ...

  9. 77)PHP,将session数据写到不用的存储介质中

    首先我的siession数据可以写到:文件中    session数据区  或者数据库中, 那么怎么将文件中的session数据或者session数据区的数据写到  数据库中,,又或者任意挑选两个不同 ...

随机推荐

  1. Java 过滤器Filter,Java Filter 不拦截某些请求 Java 过滤器支持Ajax请求

    ================================ ©Copyright 蕃薯耀 2020-01-10 https://www.cnblogs.com/fanshuyao/ 一.Java ...

  2. nodejs(7)练习 http 和 express 创建简单的服务器

    http const http = require('http') // 创建服务器 const server = http.createServer() // 绑定事件,监听客户端的请求 serve ...

  3. python logging的输出

    ---恢复内容开始--- python中logging的使用 什么是日志: 日志是一种可以追踪某些软件运行时所发生事件的方法 软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情 ...

  4. Eureka高可用环境搭建

    1.创建govern-center 子工程 包结构:com.dehigher.govern.center 2.pom文件 (1)父工程pom,用于依赖版本管理 <dependencyManage ...

  5. openlayers的loaders方式加载

    openlayers loaders方式加载 let layerVector = new ol.layer.Vector({ source : new ol.source.Vector({ loade ...

  6. php 文件锁解决并发问题

    阻塞(等待)模式: <?php $fp = fopen("lock.txt", "r"); if(flock($fp,LOCK_EX)) { //.. d ...

  7. PHP学习之-文件上传

    一.PHP文件上传 HTML部分 <form action="file_big.php" method="post" enctype="mult ...

  8. python3.x设置默认编码(sys.stdout.encoding和sys.defaultencoding)

    查了一会资料得出的结论是如果你用的是python3.x,那么就最好别去设置sys.defaultencoding或者sys.stdout.encoding记住在需要编码的时候用encode,解码的时候 ...

  9. SpringBoot2中,怎么生成静态文档

    SpringBoot2中,怎么生成静态文档 在实际开发过程中,我们通过swagger就可以生成我们的接口文档,这个文档就可以提供给前端人员开发使用的.但是,有时候,我们需要把我们的接口文档,提供给第三 ...

  10. ID3/C4.5/Gini Index

    ID3/C4.5/Gini Index */--> ID3/C4.5/Gini Index 1 ID3 Select the attribute with the highest informa ...