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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
示例详解Laravel的注册重构
Aug 14 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP静态文件生成类实例
2014/11/29 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
vue项目中使用Svg的方法
2018/10/24 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
python del()函数用法
2013/03/24 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
python多线程http压力测试脚本
2019/06/25 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
数据库专业英语
2012/11/30 面试题
面向对象设计的原则是什么
2013/02/13 面试题
文秘专业应届生求职信范文
2013/11/14 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
见习期自我鉴定
2014/01/31 职场文书
入职担保书怎么写
2014/05/12 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
寒假生活随笔
2015/08/15 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript