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


Posted in PHP onOctober 10, 2016

本文实例讲述了PHP定时任务获取微信access_token的方法。分享给大家供大家参考,具体如下:

微信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的正常获取和使用,不用频繁的去刷新微信服务器了。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
同时提取多条新闻中的文本一例
Oct 09 PHP
php桌面中心(四) 数据显示
Mar 11 PHP
php三维数组去重(示例代码)
Nov 26 PHP
php 不使用js实现页面跳转
Feb 11 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
Symfony生成二维码的方法
Feb 04 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
php中请求url的五种方法总结
Jul 13 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 #PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 #PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 #PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 #PHP
PHP对象链式操作实现原理分析
Oct 09 #PHP
SAE实时日志接口SDK用法示例
Oct 09 #PHP
对PHP依赖注入的理解实例分析
Oct 09 #PHP
You might like
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
Angular2整合其他插件的方法
2018/01/20 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
聚会通知怎么写
2015/04/23 职场文书
感谢师恩主题班会
2015/08/17 职场文书
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技