还有东西要搞,就直接上代码

function.php

<?php
// 一个好玩的 curl 类
// https://github.com/metowolf/Meting/blob/master/src/Meting.php
// curl 方法请求 url
function https_request($url,$data)
{
// 初始化
$ch = curl_init();
// 设置
curl_setopt($ch,CURLOPT_URL,$url);
// 检查ssl证书
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
// 从检查本地证书检查是否ssl加密
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,$url); if ( !empty($data) ) {
curl_setopt($ch,CURLOPT_POST,1);// 开启post
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);// 发送post $data }
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch);
curl_close($ch); // close curl res
return $res;
} function __autoload($className)
{
if ( file_exists('./Controller/'.$className.'.php')) {
include './Controller/'.$className.'.php';
}
} ?>

Token.php

<?php

/**
* token
*/
class Token
{
public static $tokenFile = './token.txt';
public static $tokenExpireTime = '3600'; // 入口方法获取token
public static function getToken()
{
// 先查缓存, 没有,再去请求
if ( !self::checkTokenFileExists() || self::checkTokenFileExpire() ) {
// 不存在 要重新请求
// 过期 也要重新请求
$token = self::request_token();
// 更新缓存
self::write_token($token);
return $token;
}else{
// 缓存合法
// 读取缓存
return self::read_token(); } } public static function write_token($token)
{
file_put_contents(self::$tokenFile,$token);
}
public static function read_token()
{
return file_get_contents(self::$tokenFile);
} public static function request_token()
{
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx199e07a40f2b94e7&secret=080b6aa95c137c95e1fb61c7eebfa0b2';
// 发起 get
$res = https_request($url);
$data = json_decode($res,true);
$token = $data['access_token'];
// var_dump($token);
return $token;
} public static function checkTokenFileExists()
{
return file_exists(self::$tokenFile);
}
// 返回过期
public static function checkTokenFileExpire()
{ return filemtime(self::$tokenFile) + self::$tokenExpireTime < time();
} } ?>

微信access_token请求之简单缓存方法封装的更多相关文章

  1. 通用ajax请求方法封装,兼容主流浏览器

    ajax简单介绍 没有AJAX会怎么样?普通的ASP.Net每次运行服务端方法的时候都要刷新当前页面. 假设没有AJAX,在youku看视频的过程中假设点击了"顶.踩".评论.评论 ...

  2. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)

    一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...

  3. 前端清除缓存方法(微信缓存引起的bug)

    bug1:在新版微信中,部门安卓机子(华为)出现window.location.href/window.location.reload....等方法来刷新本页面链接,发现页面没有被刷新,经过排查,发现 ...

  4. java 接口自动化测试之数据请求的简单封装

    我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进 ...

  5. 基于promise对小程序http请求方法封装

    原因是我不想每次请求都复制粘贴那么长的请求地址,所以我把前边那一坨请求地址作为基础地址,只传后台给的路由就ok,而且,并不是每次请求都要显示正在加载,这对小程序体验很差,所以,我加了个形参,用来判断是 ...

  6. Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装

    在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...

  7. axios浏览器异步请求方法封装 XMLHttpRequest

    axios学习笔记defaults(浏览器端异步请求处理方式) 浏览器异步请求方法封装,主要使用XMLHttpRequest lib/adapters/xhr.js //入口 var utils = ...

  8. Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    (一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...

随机推荐

  1. android精品开源项目整理

    转载地址:http://www.eoeandroid.com/thread-311366-1-1.html 前言:无论你是android的初学者,还有是Android开发了好多年的高手,可能都会有很多 ...

  2. SkylineGlobe 6.6 三维地图上实现自定义右键菜单示例代码

    1.OnRButtonDown.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  3. SkylineGlobe6.5版本,在矿山、石油、天然气等能源行业的最新应用DEMO演示

    SkylineGlobe6.5版本,在矿山.石油.天然气等能源行业的最新应用DEMO演示: http://v.youku.com/v_show/id_XNTc3Njc1OTEy.html 一个Pres ...

  4. CAN协议教程

    介绍:CAN总线 CAN总线是广播类型的总线.这意味着所有节点都可以侦听到所有传输的报文.无法将报文单独发送给指定节点:所有节点都将始终捕获所有报文.但是,CAN硬件能够提供本地过滤功能,让每个节点对 ...

  5. odooERP系统(框架)总结

    1:Odoo 是一个现代化的商业应用套件,使用 AGPL 许可证,并具有客户关系管理(CRM),人力资源,销售,采购,会计,制造,仓库管理,项目管理,以及众多社区模块. 2:它是基于一个模块化,可扩展 ...

  6. 读取Excel的记录并导入SQL数据库

    准备一下,近段时间,需要把Excel的数据导入数据库中. 引用命名空间: using System.Configuration; using System.Data; using System.Dat ...

  7. MySql 数据库移植记录

    在使用长文本时,SqlServer 在以下情况下工作正常 [Property("CContent", ColumnType = "StringClob", Le ...

  8. 01-时间复杂度、对数器(python)、冒泡、选择、递归实质、归并、小和问题、逆序对、mid

    1.时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作. 时间复杂度为一个算法流程中,常数操作数量的指标.常用O(读作big O)来表示. 具体来说, ...

  9. WordPress更新提示无法创建目录的解决方案

    上一篇我们说到无法连接FTP服务器,我们已经完美的解决了,然后...发现...还是无法更新,啥情况??? 提示为无法创建目录 原因是执行更新程序的是www用户, 解决方案如下: 需要把插件或主程序下载 ...

  10. StackOverflow 问题

    StackOverflow  这个问题一般是你的程序里头可能是有死循环或递归调用所产生的:可以查看一下你的程序,也可以增大你JVM的内存~~~在Eclipse中JDK的配置中加上   -XX:MaxD ...