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
最小化数据传输――在客户端存储数据
Oct 09 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 PHP
php实现Mysql简易操作类
Oct 11 PHP
各种快递查询--Api接口
Apr 26 PHP
php微信公众号开发之现金红包
Apr 16 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 PHP
PHP 实现链式操作
Mar 09 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php.ini中文版
2006/10/09 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
js 窗口抖动示例
2013/09/04 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python文件及目录操作实例详解
2015/06/04 Python
Python制作爬虫采集小说
2015/10/25 Python
对python字典过滤条件的实例详解
2019/01/22 Python
Python中的asyncio代码详解
2019/06/10 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
python爬虫添加请求头代码实例
2019/12/28 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
啤酒销售实习自我鉴定
2013/09/24 职场文书
护士检查书
2014/01/17 职场文书
销售业务员岗位职责
2014/01/29 职场文书
淘宝活动总结范文
2014/06/26 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
部门2014年度工作总结
2014/11/12 职场文书
材料采购员岗位职责
2015/04/03 职场文书
2015年共青团工作总结
2015/05/15 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python