WeChat パブリック アカウントの開発を行ったすべての PHP 者は、WeChat インターフェイスにアクセスするには access_token が必要であることを知っていると思います。 access_token は、公式アカウントの認証情報を呼び出すグローバルに一意なインターフェイスです。この access_token は 1 日に取得できる回数に制限があるため、自分で保存する必要があります。また、このトークンには有効期限もあります。したがって、定期的に更新して access_token を再取得する必要があります。
それを保存するにはどうすればよいですか? mysql を使用する場合、1 つのテーブルには 1 つのデータしか格納されませんが、これはやりすぎであまり洗練されていないように感じられます。ファイルを使用して保存する場合は、パフォーマンスがあまり良くなく、やはり少し面倒ですが、ダーティ リードの問題を考慮する必要があります。
Redis を使用してトークンを保存する、シンプルかつエレガントでパフォーマンスの高い方法を紹介します。
2 つのコマンド
Redis には多くのデータ型があります。ここでは、最も単純なデータ型の 2 つだけが必要です。文字列 シンプルなコマンドで機能を完了できます。私たちには必要です。
set
get
これら 2 つのコマンドは非常に単純で、set は 1 つのコマンドに対応します。キーは文字列に設定されます。
$redis->set('name', 'monkeyking');
上記は、キー名の値が Monkeyking に設定されていることを示しています。さらに、キーの有効期限を設定できます。有効期限を設定できるのはとても便利です。
$redis->set('name', 'monkeyking', ['ex' => 100]); # 过期时间设置为100秒后
get コマンドは文字列を取得します。次のコードは、キー名の値を取得することを意味します。
$redis->get('name');
優れたパフォーマンスに加えて、redis の使用には非常に優れた点もあります。シングルスレッド アーキテクチャであるため、すべてのコマンドが順番に実行されます。前のコマンドが実行された後、次のコマンドが実行されるため、ダーティ リードは発生しません。
関数の実装
set と get を導入したら、必要な作業を完了できます。
WeChat が access_token を取得するためのインターフェイス、返されるデータ形式は次のとおりです:
{"access_token":"xEaew2sI2dsAd","expires_in":7200}
WeChat xEaew2sI2dsAd を追加するだけです。保存して有効期限を設定するだけです。
コードは次のとおりです:
function setAccessToken ($token) { return $redis->set( 'wx_access_token', $token, ['ex'=>7000] ); } function getAccessToken () { return $redis->get('wx_access_token') }
上記で注意すべき点があり、有効期限は 7200 より小さく設定する必要があります。 7200 秒ちょうどでトークンを取得し、WeChat でインターフェイスを呼び出すなどの極端な状況を防ぎます。インターフェイスの呼び出しにも時間がかかるため、トークンの有効期限が切れてエラーが発生します。
Redis を使用してトークンにアクセスするのは非常に簡単で便利です。誰でも試してみることができます。
以上がRedis を使用してトークンを保存するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。