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更改目录及子目录下所有的文件后缀的代码
Sep 24 PHP
PHP执行zip与rar解压缩方法实现代码
Dec 05 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
php以post形式发送xml的方法
Nov 04 PHP
php删除指定目录的方法
Apr 03 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
详解php与ethereum客户端交互
Apr 28 PHP
php微信开发之谷歌测距
Jun 14 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
PHP7 windows支持
Mar 09 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
PHP5中MVC结构学习
2006/10/09 PHP
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
php的access操作类
2008/04/09 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
清空上传控件input file的值
2010/07/03 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
微信小程序实现星级评价效果
2018/12/28 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
django ajax json的实例代码
2018/05/29 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
致共产党员倡议书
2014/04/16 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
保安2014年终工作总结
2014/12/06 职场文书
退休欢送会致辞
2015/07/31 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python