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 相关文章推荐
关于PHP中的Class的几点个人看法
Oct 09 PHP
高亮度显示php源代码
Oct 09 PHP
十天学会php之第四天
Oct 09 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 PHP
重新认识php array_merge函数
Aug 31 PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 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
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
destoon二次开发入门示例
2014/06/20 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
js简易版购物车功能
2017/06/17 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
python变量的作用域是什么
2020/05/26 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
python实现ping命令小程序
2020/12/28 Python
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
美体小铺法国官方网站:The Body Shop法国
2020/06/04 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
安全资料员岗位职责
2013/12/14 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
学校党员干部承诺书
2015/05/04 职场文书
员工表扬信怎么写
2015/05/05 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python