将Session写入Memcache,sessionmemcache
将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>);

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP で書かれた txt ファイルの中国語文字化けを解決するヒント. インターネットの急速な発展に伴い、PHP は広く使用されているプログラミング言語として、ますます多くの開発者に使用されています。 PHP 開発では、中国語のコンテンツを記述する txt ファイルなどのテキスト ファイルの読み取りと書き込みが必要になることがよくあります。ただし、エンコード形式の問題により、書かれた中国語が文字化けして表示されることがあります。この記事では、PHPでtxtファイルに書き込まれた中国語の文字化けを解決するテクニックと、具体的なコード例を紹介します。 PHP、テキストの問題分析

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

Web 開発では、Web サイトのパフォーマンスと応答速度を向上させるためにキャッシュ テクノロジを使用する必要があることがよくあります。 Memcache は、あらゆる種類のデータをキャッシュでき、高い同時実行性と高可用性をサポートする一般的なキャッシュ テクノロジです。この記事では、PHP 開発で Memcache を使用する方法を紹介し、具体的なコード例を示します。 1. Memcache のインストール Memcache を使用するには、まずサーバーに Memcache 拡張機能をインストールする必要があります。 CentOS オペレーティング システムでは、次のコマンドを使用できます。

OpenCSV を使用して Java で CSV ファイルを読み書きする例 CSV (Comma-SeparatedValues) は、カンマ区切り値を指し、一般的なデータ ストレージ形式です。 Java では、OpenCSV は CSV ファイルの読み取りと書き込みによく使用されるツール ライブラリです。この記事では、OpenCSVを使用してCSVファイルの読み書き例を実装する方法を紹介します。 OpenCSV ライブラリの導入 まず、OpenCSV ライブラリを導入する必要があります。

JavaScriptCookies JavaScript Cookie の使用は、設定、購入、手数料、その他の情報を記憶および追跡する最も効果的な方法です。訪問者のエクスペリエンスを向上させるために必要な情報やウェブサイトの統計。 PHPCookieCookie は、クライアント コンピューターに保存され、追跡目的で保持されるテキスト ファイルです。 PHP は HTTP Cookie を透過的にサポートします。 JavaScript Cookie はどのように機能しますか?サーバーは、訪問者のブラウザに Cookie の形式でデータを送信します。ブラウザは Cookie を受け入れることができます。存在する場合、それは訪問者のハードドライブにプレーンテキストレコードとして保存されます。さて、訪問者がサイト上の別のページに到達すると、

PHP ファイル処理の入門: 読み取りと書き込みのためのステップバイステップ ガイド Web 開発では、ユーザーがアップロードしたファイルを読み取る場合でも、後で使用するために結果をファイルに書き込む場合でも、ファイル処理は一般的なタスクです。 PHP ドキュメント処理は非常に重要です。この記事では、PHP でファイルの読み取りと書き込みの基本手順を紹介する簡単なガイドを提供し、参照用のコード例を添付します。 PHP でファイルを読み取る場合、fopen() 関数を使用してファイルを開いてファイル リソース (ファイル) を返すことができます。

ドメインを越えた PHPSession と AJAX 間の非同期通信の最適化 インターネットの発展に伴い、クロスドメイン アクセスと非同期通信は、現代の Web アプリケーション開発における一般的な要件になりました。この記事では、PHPSession を使用してクロスドメイン アクセスを実現する方法に焦点を当て、AJAX の非同期通信効率を向上させるための最適化方法をいくつか紹介します。 1. クロスドメインアクセスの問題 Web開発において、ブラウザがあるドメイン名のWebページからHTTPリクエストを開始し、別のドメイン名のレスポンスデータを返す場合にクロスドメインアクセスの問題が発生します。
