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 array_merge下进行数组合并的代码
Jul 22 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
CentOS安装php v8js教程
Feb 26 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 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验证码实现代码
2014/05/10 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
JS实现多功能计算器
2020/10/28 Javascript
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
客服工作职责
2013/12/11 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS