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之第六天
Oct 09 PHP
php中的时间处理
Oct 09 PHP
php Ajax乱码
Apr 09 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
PHP使用两个栈实现队列功能的方法
Jan 15 PHP
PHP实现的AES双向加密解密功能示例【128位】
Sep 03 PHP
php查看一个变量的占用内存的实例代码
Mar 29 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版)
2012/08/21 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python实现线程池的方法
2015/06/30 Python
Python代码实现KNN算法
2017/12/20 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
python微信好友数据分析详解
2018/11/19 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
Python如何实现定时器功能
2020/05/28 Python
django 模型字段设置默认值代码
2020/07/15 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
委托收款证明
2015/06/23 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
高二数学教学反思
2016/02/18 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang