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 相关文章推荐
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
php操作mysqli(示例代码)
Oct 28 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
利用PHP将图片转换成base64编码的实现方法
Sep 13 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 PHP
is_file和file_exists效率比较
Mar 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
基于PHP异步执行的常用方式详解
2013/06/03 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
js数组去重的hash方法
2016/12/22 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
python开发之文件操作用法实例
2015/11/13 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
Django权限设置及验证方式
2020/05/13 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
Python类super()及私有属性原理解析
2020/06/15 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
出生医学证明样本
2014/01/17 职场文书
工程承诺书怎么写
2014/05/24 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
大学军训的体会
2014/11/08 职场文书
初中教师个人总结
2015/02/10 职场文书
小型婚礼主持词
2015/06/30 职场文书
人身损害赔偿协议书
2016/03/22 职场文书