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 相关文章推荐
实用函数8
Nov 08 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 PHP
php有道翻译api调用方法实例
Dec 22 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
php中通用的excel导出方法实例
Dec 30 PHP
PHP APP微信提现接口代码
Sep 30 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
php中几种常见安全设置详解
2010/04/06 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
Django实现图片文字同时提交的方法
2015/05/26 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
师范学院毕业生求职信范文
2013/12/26 职场文书
求职简历自我评价范例
2014/03/12 职场文书
论文答谢词
2015/01/20 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis