目录
将Session写入Memcache,sessionmemcache
首页 后端开发 php教程 将Session写入Memcache,sessionmemcache_PHP教程

将Session写入Memcache,sessionmemcache_PHP教程

Jul 13, 2016 am 09:57 AM
memcache session 写入

将Session写入Memcache,sessionmemcache

通过session_set_save_handler()方法自定义Session写入Memcache

<span> 1</span> <?<span>php    
</span><span> 2</span>     <span>class</span><span> MemSession{
</span><span> 3</span>         <span>private</span> <span>static</span> <span>$handler</span> = <span>null</span><span>;
</span><span> 4</span>         <span>private</span> <span>static</span> <span>$lifetime</span> = <span>null</span><span>;
</span><span> 5</span>         <span>private</span> <span>static</span> <span>$time</span> = <span>null</span><span>;
</span><span> 6</span>         <span>const</span> MS = 'session'<span>;
</span><span> 7</span>         
<span> 8</span>         <span>private</span> <span>static</span> <span>function</span> init(<span>$handler</span><span>){
</span><span> 9</span>             self::<span>$handler</span> = <span>$handler</span><span>;
</span><span>10</span>             self::<span>$lifetime</span> = <span>ini_get</span>('session.gc_maxlifetime'<span>);
</span><span>11</span>             self::<span>$time</span> = <span>time</span><span>();
</span><span>12</span> <span>        }
</span><span>13</span>         
<span>14</span>         <span>public</span> <span>static</span> <span>function</span> start(<span>$memcache</span><span>){
</span><span>15</span>             self::init(<span>$memcache</span><span>);
</span><span>16</span>             <span>//</span><span>调用类中的方法要用数组,__CLASS__代表本类</span>
<span>17</span>             <span>session_set_save_handler</span><span>(
</span><span>18</span>                 <span>array</span>(<span>__CLASS__</span>,'open'),
<span>19</span>                 <span>array</span>(<span>__CLASS__</span>,'close'),
<span>20</span>                 <span>array</span>(<span>__CLASS__</span>,'read'),
<span>21</span>                 <span>array</span>(<span>__CLASS__</span>,'write'),
<span>22</span>                 <span>array</span>(<span>__CLASS__</span>,'destroy'),
<span>23</span>                 <span>array</span>(<span>__CLASS__</span>,'gc'<span>)
</span><span>24</span> <span>            );
</span><span>25</span>             <span>session_start</span><span>();
</span><span>26</span> <span>        }
</span><span>27</span>         
<span>28</span>         <span>public</span> <span>static</span> <span>function</span> open(<span>$path</span>,<span>$name</span><span>){
</span><span>29</span>             
<span>30</span> <span>        }
</span><span>31</span>         <span>public</span> <span>static</span> <span>function</span><span> close(){
</span><span>32</span>             
<span>33</span> <span>        }
</span><span>34</span>         
<span>35</span>         <span>public</span> <span>static</span> <span>function</span> read(<span>$PHPSESSID</span><span>){
</span><span>36</span>             <span>$val</span> = self::<span>$handler</span>->get(self::session_key(<span>$PHPSESSID</span><span>));
</span><span>37</span>             
<span>38</span>             <span>if</span>(<span>$val</span>===<span>false</span> || <span>$val</span>==<span>null</span><span>){
</span><span>39</span>                 <span>return</span> <span>false</span><span>;
</span><span>40</span> <span>            }
</span><span>41</span>             <span>return</span> <span>$val</span><span>;
</span><span>42</span> <span>        }
</span><span>43</span>         <span>public</span> <span>static</span> <span>function</span> write(<span>$PHPSESSID</span>,<span>$data</span><span>){
</span><span>44</span>             <span>$method</span> = <span>$data</span>? 'set':'replace'<span>;
</span><span>45</span>             <span>return</span> self::<span>$handler</span>-><span>$method</span>(self::session_key(<span>$PHPSESSID</span>),<span>$data</span>,MEMCACHE_COMPRESSED,self::<span>$lifetime</span><span>);
</span><span>46</span> <span>        }
</span><span>47</span>         
<span>48</span>         <span>public</span> <span>static</span> <span>function</span> destroy(<span>$PHPSESSID</span><span>){
</span><span>49</span>             <span>return</span> self::<span>$handle</span>->delete(self::session_key(<span>$PHPSESSID</span><span>));
</span><span>50</span> <span>        }
</span><span>51</span>         <span>//</span><span>memcache本身就有限定时间,数据自动销毁,所以可不使用gc方法</span>
<span>52</span>         <span>public</span> <span>static</span> <span>function</span> gc(<span>$lifetime</span><span>){
</span><span>53</span>             <span>return</span> <span>true</span><span>;
</span><span>54</span> <span>        }
</span><span>55</span>         
<span>56</span>         <span>//</span><span>给sessionID加前缀,避免key重复</span>
<span>57</span>         <span>private</span> <span>static</span> <span>function</span> session_key(<span>$PHPSESSID</span><span>){
</span><span>58</span>             <span>$session_key</span> = self::MS.<span>$PHPSESSID</span><span>;
</span><span>59</span>             <span>return</span> <span>$session_key</span><span>;
</span><span>60</span> <span>        }        
</span><span>61</span> <span>    }
</span><span>62</span>     <span>$mem</span> = <span>new</span><span> Memcache;
</span><span>63</span>     <span>$mem</span>->connect("localhost",11211) or <span>die</span>("could not connect"<span>);
</span><span>64</span>     MemSession::start(<span>$mem</span>);
登录后复制

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/980027.htmlTechArticle将Session写入Memcache,sessionmemcache 通过session_set_save_handler()方法自定义Session写入Memcache 1 ? php 2 class MemSession{ 3 private static $handler = null ; 4 pri...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

session失效怎么解决 session失效怎么解决 Oct 18, 2023 pm 05:19 PM

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

解决PHP写入txt文件中文乱码的技巧 解决PHP写入txt文件中文乱码的技巧 Mar 27, 2024 pm 01:18 PM

解决PHP写入txt文件中文乱码的技巧随着互联网的迅猛发展,PHP作为一种广泛应用的编程语言,被越来越多的开发者所使用。在PHP开发中,经常需要对文本文件进行读写操作,其中包括写入中文内容的txt文件。然而,由于编码格式的问题,有时候会导致写入的中文出现乱码。本文将介绍一些解决PHP写入txt文件中文乱码的技巧,并提供具体的代码示例。问题分析在PHP中,文本

PHP Session 跨域问题的解决方法 PHP Session 跨域问题的解决方法 Oct 12, 2023 pm 03:00 PM

PHPSession跨域问题的解决方法在前后端分离的开发中,跨域请求已成为常态。在处理跨域问题时,我们通常会涉及到session的使用和管理。然而,由于浏览器的同源策略限制,跨域情况下默认情况下无法共享session。为了解决这个问题,我们需要采用一些技巧和方法来实现session的跨域共享。一、使用cookie跨域共享session最常

如何使用PHP开发中的Memcache? 如何使用PHP开发中的Memcache? Nov 07, 2023 pm 12:49 PM

在Web开发中,我们经常需要使用缓存技术来提高网站的性能和响应速度。Memcache是一种流行的缓存技术,它可以缓存任何数据类型、支持高并发和高可用性。本文将介绍如何使用PHP开发中的Memcache,并提供具体代码示例。一、安装Memcache要使用Memcache,我们首先需要在服务器上安装Memcache扩展。在CentOS操作系统中,可以使用以下命令

Java 中使用 OpenCSV 读取和写入 CSV 文件的示例 Java 中使用 OpenCSV 读取和写入 CSV 文件的示例 Dec 20, 2023 pm 01:39 PM

Java中使用OpenCSV读取和写入CSV文件的示例CSV(Comma-SeparatedValues)指的是以逗号分隔的数值,是一种常见的数据存储格式。在Java中,OpenCSV是一个常用的工具库,用于读取和写入CSV文件。本文将介绍如何使用OpenCSV来实现读取和写入CSV文件的示例。引入OpenCSV库首先,需要引入OpenCSV库到

JavaScript和PHP的cookie之间有哪些区别? JavaScript和PHP的cookie之间有哪些区别? Sep 02, 2023 pm 12:29 PM

JavaScriptCookie使用JavaScriptcookie是记住和跟踪偏好、购买、佣金和其他信息的最有效方法。更好的访问者体验或网站统计所需的信息。PHPCookieCookie是存储在客户端计算机上的文本文件并保留它们用于跟踪目的。PHP透明地支持HTTPcookie。JavaScriptcookie如何工作?您的服务器将一些数据发送到访问者的浏览器cookie的形式。浏览器可以接受cookie。如果存在,它将作为纯文本记录存储在访问者的硬盘上。现在,当访问者到达站点上的另一个页面时

PHP文件处理入门:读取与写入的步骤指引 PHP文件处理入门:读取与写入的步骤指引 Sep 06, 2023 am 09:58 AM

PHP文件处理入门:读取与写入的步骤指引在Web开发中,文件处理是一项常见的任务,无论是读取用户上传的文件,还是将结果写入文件供后续使用,理解如何在PHP中进行文件处理都是至关重要的。本文将提供一个简单的指引,介绍PHP中文件的读取和写入的基本步骤,并附上代码示例供参考。文件读取在PHP中,可以使用fopen()函数打开一个文件,返回一个文件资源(file

如何通过PHP实现Modbus TCP的批量读取和写入 如何通过PHP实现Modbus TCP的批量读取和写入 Jul 17, 2023 pm 03:54 PM

如何通过PHP实现ModbusTCP的批量读取和写入一、ModbusTCP简介ModbusTCP是一种基于TCP/IP协议的工业通信协议,常用于工控领域中的设备通信。通过使用ModbusTCP协议,可以实现设备之间的数据读取和写入操作。本文将针对使用PHP语言实现ModbusTCP的批量读取和写入进行介绍,并附上相应的代码示例。二、环境准备在开始编

See all articles