php缓存accestoken_php微信开发(1):缓存access_token的方法

语言:PHP

access_token一直要用,但每天取的数量有限制。反正2小时才过期。就想缓存一下。

File1: wx_access_token.php

File2: file_cache.php

---------------------------

File1: wx_access_token.php

/*

* wx_access_token.php

*

* get the weixin access token

* */

if (!defined("DOCUMENT_ROOT")) define("DOCUMENT_ROOT", $_SERVER['DOCUMENT_ROOT']);

if (!defined("__HOME__")) define("__HOME__", dirname(DOCUMENT_ROOT));

require_once("file_cache.php");

class WxAccessToken{

public function getToken(){

$wx_access_token_cache_key = 'wx_access_token';

$cache = new FileCache(__HOME__ . '/myfolder/cache_file.txt');

$token = $cache->get($wx_access_token_cache_key);

if (!$token){

$token = $this->getTokenFromWx();

$cache->set($wx_access_token_cache_key, $token, time()+7000);

}

return $token;

}

private function getTokenFromWx(){

$appid = "your appid";

$appsecret = "your app secret";

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);

curl_close($ch);

$jsoninfo = json_decode($output, true);

return $jsoninfo["access_token"];

}

}

?>

File2: file_cache.php

/*

* file_cache.php

*

* cache objects via json with filesystem

* author: hydon lee

* */

/*

class FileCache

examples:

$cache = new FileCache('../myfolder/cache_file.txt');

$cache->set('username', 'lihd', time()+3600);

$username = $cache->get('username');

echo $username;

*/

class FileCache{

private $cache_file;

private function load(){

if(file_exists($this->cache_file)){

$content = file_get_contents($this->cache_file);

if (strlen($content) > 0){

$data = json_decode($content);

return $data;

}

}

return array();

}

private function save($data){

$content = json_encode($data);

return file_put_contents($this->cache_file, $content);

}

public function __construct($filename) {

$this->cache_file = $filename;

}

public function get($key){

$data = $this->load();

foreach($data as $item){

if ($item->key == $key){

if ($item->expire_time > time()){

return $item->value;

}

break;

}

}

return NULL;

}

public function set($key, $value, $expire_time=NULL){

$data = $this->load();

$obj = NULL;

foreach($data as $item){

if ($item->key == $key){

$obj = $item;

$obj->value = $value;

if ($expire_time != NULL){

$obj->expire_time = $expire_time;

}

break;

}

}

if ($obj == NULL){

$obj = new CacheItem($key, $value, $expire_time);

array_push($data, $obj);

}

return $this->save($data);

}

}

class CacheItem{

public $key;

public $value;

public $expire_time;

public function __construct($key, $value, $expire_time) {

$this->key = $key;

$this->value = $value;

$this->expire_time = $expire_time;

}

}

?>

夺命雷公狗---微信开发13----获取access_token

获得Access Token的方法1: 这里可以手动进行修改: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential ...

微信开发笔记:公众号获取access_token

微信开发中,access_token的获取是一种非常常见的功能,通过公众号的appid和appsecret来向微信公众平台请求一个临时通行凭证:access_token.公众平台上的绝大部分操作都会需 ...

第五篇 :微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token

一.access_token简介 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等, 开 ...

Java开发微信公众号(五)---微信开发中如何获取access_token以及缓存access_token

获取access_token是微信api最重要的一个部分,因为调用其他api很多都需要用到access_token.比如自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等在请求的时候 ...

PHP定时任务获取微信access_token的方法

一.使用brew安装php多版本方法 # brew install php56# brew install php70二.安装切换工具 # brew install php-version# sour ...

[麦先生]TP3.2之微信开发那点事[基础篇](获取access_token)

在微信文档中一共提供了两个access_token:一个是伪全局配置的Access_token;一个是在微信网页授权时的小Access_token 很多刚刚接触微信开发的人经常会混淆这两个的作用: 我 ...

php - 微信 - 缓存access_token类。

可扩展性很强.

微信公众号的搭建-第四天(2)-获取并缓存access_token

1. 什么是access_token? 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等 ...

微信小程序--缓存,支持过期时间的二次开发封装

简介 微信小程序提供了缓存的api,包括同步和异步两种,具体api不多说明,可自行查看官方文档 现在微信小程序缓存api存在一个问题就是没有设定过期时间,下面给大家介绍一下对小程序缓存的二次封装,使其 ...

随机推荐

Angular源码分析之$compile

@(Angular) $compile,在Angular中即"编译"服务,它涉及到Angular应用的"编译"和"链接"两个阶段,根据从DO ...

python+eclipse环境搭建

一.Eclipse 的安装 Eclipse的安装是很容易的.Eclipse是基于java的一个应用程序,因此需要一个java的运行环境(JRE)才行.(我这里主要介绍windows下的安装) JRE的 ...

CXF发布restful WebService的入门例子(客户端)

上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端. 客户端的实现方式有无数种...可 ...

canvas createRadialGradient 用法

径向渐变,就是环形的渐变了,由圆心(或者是较小的同心圆)开始向外扩散渐变的效果,听着有些抽象,往下看图一下子就明白了.线性渐变指定了起点和终点,径向渐变则指定了开始的结束园的圆心和半径.这里使用cre ...

CSS3 背景

CSS3包含多个新的背景属性,他们提供了对背景更强大的控制. 本章将学到一下背景属性: background-size background-origin 你也将学到如何使用多重背景图片. 浏览器支持 ...

shell 学习

将maven 项目里面的jar 包导出目录: 在项目里面执行: mvn dependency:copy-dependencies -DoutputDirectory=lib shell 参数之间必有空 ...

JavaScript高级程序设计---学习笔记(五)

1.2D上下文 1)填充与描边 填充和描边的两个操作取决于两个属性:fillStyle和strokeStyle.两个属性的值可以是字符串.渐变对象或模式对象,默认值都是#000000 例: html: ...

iOS app 的 ASLR

这两天逆向一个程序,发现每次image list -o -f 之后,它的基地址都是0x00000,也就是偏移地址是0.  想到这个应该是载入内存时有没有启用偏移有关,于是找了下答案:aslr 百度百科 ...

Flask--偏函数, 线程安全, 请求上下文

一 . 偏函数 from functools import partial def func(a, b): return a + b new_func = partial(func, 3, 4) # ...


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部