当前位置: 首页 > news >正文

php定时刷新token,PHP定时任务获取微信access_token的方法实例分享

这篇文章主要介绍了PHP定时任务获取微信access_token的方法,涉及php基于curl动态获取access_token及CentOS下crontab设置计划任务的相关操作技巧,需要的朋友可以参考下

微信access_token在开发时会变的好像是几分种不一样了,这里我们来介绍关于PHP定时任务获取微信access_token的方法。

最近开发微信公众平台,公众号调用各接口时都需使用access_token,access_token是公众号的全局唯一接口调用凭据,开发时需要进行妥善保存。 access_token有效期为7200秒 ,重复获取将导致上次获取的access_token失效。

由于微信对获取access_token的api调用次数做了限制,建议开发者全局存储与更新access_token,频繁刷新access_token会导致api调用受限,影响自身业务。

那么有什么好的解决access_token存储和刷新的办法呢? 我的办法是:计划任务定时刷新获取access_token,然后将access_token保存到服务器本地,保存方式可以是文件、数据库或缓存中。

下面我使用PHP来获取access_token,并保存到本地文件中。建立一个access.php,代码如下:

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

$result = http_request($url);

//生成文件,保存token

$dir = __DIR__; //真实路径,crontab命令的php执行在cli模式下,不能正确识别相对路径,所以使用__DIR__

$filename = $dir."/access_token.php";

create_file($filename, $result);

function http_request($url,$data = null){

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

if (!empty($data)){

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

}

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($curl);

curl_close($curl);

return $output;

}

//生成文件

function create_file($filename, $content){

$fp = fopen($filename, "w");

fwrite($fp, "" . $content);

fclose($fp);

}

以上代码中AppID和AppSecret这两个常量是由微信公众平台提供,可以登录到微信公众平台的基本配置里获取。获取到的access_token被保存到文件access_token.php中,注意这个文件内容不要被用户访问到。

接下来,我们设置定时任务,我们以Linux的CentOS为例,使用crontab设置计划任务。

5 * * * * /usr/local/bin/php -f /home/web/access.php >> /dev/null 2>&1

以上命令设置了每隔1小时,即每小时的第05分钟执行access.php。

这样,我们就可以保证access_token的正常获取和使用,不用频繁的去刷新微信服务器了。

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

相关文章:

  • java机房上机模拟系统,机房上机安排管理系统,基于B/S模式下的JAVA系统
  • java引用技术,Java 8 方法引用
  • MATLAB简单绘图命令,简单的matlab绘图命令
  • matlab模糊控制移值到c,C/C++实现模糊控制,借助MATLAB辅助设计和fis.c文件 | 学步园...
  • matlab 稳定系统,matlab分析系统的稳定性
  • PHP的continue语句,PHP中continue语句的应用
  • php判断区间数字,如何快速判断数字在那个区间?
  • 有限差分matlab工具箱,FDTD(时域有限差分法)算法的Matlab源程序
  • matlab实现主机通信,设置主机模型和目标模型之间的通信
  • php电脑网站,PHP网站在线人数的程序代码 -电脑资料
  • 电脑php的基本方法是什么,做文员的基本电脑操作是什么
  • php 抽象类和抽象方法,PHP中抽象类和抽象方法概念与用法实例分析
  • PHP二维数组中文排序,PHP 对二维数组排序
  • php中XML怎么创建,PHP创建XML文档
  • oracle 批量insert 锁,oracle nologging 和批量insert
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Fabric架构演变之路
  • overflow: hidden IE7无效
  • python学习笔记 - ThreadLocal
  • Redis 懒删除(lazy free)简史
  • Swift 中的尾递归和蹦床
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 彻底搞懂浏览器Event-loop
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 今年的LC3大会没了?
  • 突破自己的技术思维
  • 携程小程序初体验
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • #pragma once与条件编译
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (2)STM32单片机上位机
  • (30)数组元素和与数字和的绝对差
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (ZT)出版业改革:该死的死,该生的生
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (算法)Travel Information Center
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转) ns2/nam与nam实现相关的文件
  • (转)详解PHP处理密码的几种方式
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET值类型变量“活”在哪?
  • @Async注解的坑,小心
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @Not - Empty-Null-Blank
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [C/C++]数据结构 堆的详解
  • [Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
  • [exgcd] Jzoj P1158 荒岛野人