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下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
PHP生成条形图的方法
Dec 10 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
php反射类ReflectionClass用法分析
May 12 PHP
php批量删除操作(数据访问)
May 23 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
php实现根据身份证获取精准年龄
Feb 26 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
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
用python读写excel的方法
2014/11/18 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
深入浅析Python中的迭代器
2019/06/04 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python如何对XML 解析
2020/06/28 Python
python实现画图工具
2020/08/27 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
大学生自荐材料范文
2014/12/30 职场文书
活着观后感
2015/06/03 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python
Redis实现分布式锁的五种方法详解
2022/06/14 Redis