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() を通じて拡張機能を確認できます。
PHP は Redis に正常にアクセスできます。テストコードは以下の通りです、
<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $count = $redis->exists('count') ? $redis->get('count') : 1; echo $count; $redis->set('count', ++$count);
ページを更新し、数字が増えていればRedis環境は正常です。
2. PHP の設定
Redis 拡張機能をインストールすると、次のように、redis を含む phpinfo() 出力にセッション サポート ハンドルが表示されます。
##注意すべき点は、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
2.1 php.ini の変更
php.ini ファイルを開いて、次の 2 つの値を設定します。session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379"
session.save_path = "tcp://127.0.0.1:6379?auth=password"
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"
2.3 PHP コード
次のように、実行中の PHP コードでセッションを構成することもできます。ini_set('session.save_handler', 'redis'); ini_set('session.save_path', 'tcp://127.0.0.1:6379');
3. テスト
次のように PHP テスト コードを作成します:session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count;
php 中国語ネットワーク学習トピック: php セッション (写真、ビデオ、事例を含む)
以上がRedisでPHPセッションを保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。