RedisでPHPセッションを保存する方法

藏色散人
リリース: 2023-04-04 17:28:02
転載
3642 人が閲覧しました

PHP は、追加のコードを必要とせずに、セッションを Redis に保存することをデフォルトでサポートしています。

Redis がセッションを保存するために使用するコマンドは setex です。これは、redis-cli モニターを使用したリアルタイム監視によって検出できます。

Setex コマンド構文:

setex(key, time, value)
ログイン後にコピー

このうち、key はキーの値、time は有効期限、value は文字列型の値です。

具体的な手順は以下の通りです。

1. 環境

Redis を使用してセッションを保存するには、まず次の条件を満たす必要があります:

Redis サーバーがインストールされている必要があります。 。この例では、ローカル サーバー Redis、IP: 127.0.0.1、ポート: 6379 を使用します。

PHP には phpredis 拡張機能がインストールされており、以下に示すように、phpinfo() を通じて拡張機能を確認できます。

RedisでPHPセッションを保存する方法

PHP は Redis に正常にアクセスできます。テストコードは以下の通りです、

<?php
    $redis = new Redis();
    $redis->connect(&#39;127.0.0.1&#39;, 6379);
    $count = $redis->exists(&#39;count&#39;) ? $redis->get(&#39;count&#39;) : 1;
    echo $count;
    $redis->set(&#39;count&#39;, ++$count);
ログイン後にコピー

ページを更新し、数字が増えていればRedis環境は正常です。

2. PHP の設定

Redis 拡張機能をインストールすると、次のように、redis を含む phpinfo() 出力にセッション サポート ハンドルが表示されます。

RedisでPHPセッションを保存する方法

##注意すべき点は、Redis の最大有効期限が 2147483647 (16 進数で 7fffffff) であることです。

したがって、セッション構成のリサイクル時間 session.gc_maxlifetime の値は、この数値を超えることはできません。

そうしないと、Redis が setex コマンドを使用してセッションを保存するときに、有効期限が負の数値になり、これはキーを直接削除するのと同じになります。

保存が失敗するだけでなく、PHP は次のエラーも返します:

Warning: Unknown: Failed to write session data (redis). Please verify that the current setting of session.save_path is correct (127.0.0.1:6379) in Unknown on line 0
ログイン後にコピー

次に、PHP 構成を変更します。方法は全部で 3 つあります。次のいずれかを選択してください:

2.1 php.ini の変更

php.ini ファイルを開いて、次の 2 つの値を設定します。

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
ログイン後にコピー

Redis にパスワードがある場合は、次の設定:

session.save_path = "tcp://127.0.0.1:6379?auth=password"
ログイン後にコピー

設定が完了したら、PHP-FPM を再起動します。

2.2 php-fpm.conf

PHP-FPM 設定ファイル /etc/php-fpm.conf または /etc/php-fpm.d/* を変更します。 .conf にはセッション構成もあります。

セッション設定は php.ini よりも優先され、php.ini の設定をオーバーライドします。

したがって、ここで直接変更します:

php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://127.0.0.1:6379"
ログイン後にコピー

php.ini 設定を使用する場合は、これらの 2 行を;でコメントアウトする必要があります。

その後、PHP-FPM

2.3 PHP コード

次のように、実行中の PHP コードでセッションを構成することもできます。

ini_set(&#39;session.save_handler&#39;, &#39;redis&#39;);
ini_set(&#39;session.save_path&#39;, &#39;tcp://127.0.0.1:6379&#39;);
ログイン後にコピー

3. テスト

次のように PHP テスト コードを作成します:

session_start();
$count = isset($_SESSION[&#39;count&#39;]) ? $_SESSION[&#39;count&#39;] : 1;
echo $count;
$_SESSION[&#39;count&#39;] = ++$count;
ログイン後にコピー
ページを更新すると、数値が表示されます。増加し続ける場合、セッションが正常に保存されるように Redis が構成されていることを意味します。

php 中国語ネットワーク学習トピック: php セッション (写真、ビデオ、事例を含む)

以上がRedisでPHPセッションを保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:歪麦博客
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート