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次に、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('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;ページを更新すると、数値が表示されます。増加し続ける場合、セッションが正常に保存されるように Redis が構成されていることを意味します。
php 中国語ネットワーク学習トピック: php セッション (写真、ビデオ、事例を含む)
以上がRedisでPHPセッションを保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。