zoukankan      html  css  js  c++  java
  • 微信硬件平台(九) 自己的服务器从微信获取token并保存txt

    1安装crontab:

    yum install crontabs
    

      

    说明:

    service crond start //启动服务
    service crond stop //关闭服务
    service crond restart //重启服务
    service crond reload //重新载入配置
    查看crontab服务状态:service crond status
    手动启动crontab服务:service crond start
    

    查看crontab服务是否已设置为开机启动

    chkconfig crond on
    

      

    2使用创建新任务

    调用一次获取依次token,存在txt文件里

    token.php

    请修改自己微信的开发者ID信息

    强调:  所有路径都必须给绝对路径!!!  不管是执行文件本身路径,还是文件里面填写的其他路径!!!

    手动执行正常可以改变

    但是!!!!!!!!!!!!!!!

    自动任务执行,txt始终不变!!!!

    原因在于,自动执行任务没有加载环境变量配置,不知道这个txt位置,所以txt文件必须给绝对路径!!!!!!

    <?php
    class TokenUtil {
        //获取access_token并保存到token.txt文件中
        public static function build_access_token(){
            $ch = curl_init(); //初始化一个CURL对象
            curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=自己的微信开发者ID&secret=自己的微信开发者密码");//设置你所需要抓取的URL
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中,假设上面的0换成1的话,那么接下来的$data就需要echo一下。
            $data = json_decode(curl_exec($ch));
           // echo data;
    
            if($data->access_token){
                $token_file = fopen("/var/www/html/WexinToken/token.txt","w") or die("Unable to open file!");//打开token.txt文件,没有会新建
                fwrite($token_file,$data->access_token);//重写tken.txt全部内容
                fclose($token_file);//关闭文件流
            }else{
                echo $data->errmsg;
            }
            curl_close($ch);
        }
        
        //设置定时器,每两小时执行一次build_access_token()函数获取一次access_token
        public static function set_interval(){
          	echo "go set_interval!";
            ignore_user_abort();//关闭浏览器仍然执行
            set_time_limit(0);//让程序一直执行下去
            $interval = 7200;//每隔一定时间运行
            $switch = include 'switch.php';
           while($switch){
           	    $switch = include 'switch.php';
              //  build_access_token();
                sleep($interval);//等待时间,进行下一次操作。
    
                echo "go!";
            };
        }
        
        //读取token
        public static function read_token(){
            $token_file = fopen("token.txt", "r") or die("Unable to open file!");
            $rs = fgets($token_file);
            fclose($token_file);
            return $rs;
        }
    }
    
    
    
    
       // echo "1!";
        $wechat = new TokenUtil();
    
       //  echo "2!";
        $wechat->build_access_token();
    
        // $wechat->read_token();
    
    
    
    
    
      ?>
    

      token.txt

    用于存放接收到的token

    给与token.txt操作权限

    sudo chmod -R 777 test.txt  
    创建一个新任务,每两个小时调用一次token.php,修改token.txt
    crontab -e
    

      

    按 i  进入插入模式

    先用 一分钟请求一次

    */1 * * * * /usr/bin/php /var/www/html/WexinToken/token.php
    

    验证下是否修改了txt

    成功后删除原来的定时任务

    crontab -r
    

      

    输入一个新命令  每两个小时执行一次

    * */2 * * * /usr/bin/php /var/www/html/WexinToken/token.php
    

      

    退出保存

    1按 Esc

    2按:

    3按wq  

    4回车

    查看正在运行的定时任务

    crontab -l
    

      

    重新载入配置文件或者重启服务以开始执行

    service crond restart
    

      

    如果想要删除配置,执行

    crontab -r

    no crontab for root 解决方案

    主要原因是由于这个liunx服务器 第一次使用 crontab ,还没有生成对应的文件导致的,执行了 编辑(crontab -e)后 就生成了这个文件

    [root@localhost ~]# crontab -l
    no crontab for root

    这个问题非常简单,同样在 root 用户下输入 crontab -e

    1 按 Esc

    2按:

    3按wq  

    4回车

    在输入 crontab -l 就没有问题了

  • 相关阅读:
    Java学习-sgg-day09-20200425
    Java学习-sgg-day08-20200423
    C#集合
    C#类型转换
    HTML+CSS注意知识点
    easyUI学习(1)
    sort方法根据数组中对象的某一个属性值进行排序
    Vue Router 知识点梳理(二)
    Vue Router 知识点梳理
    浏览器加载、解析、渲染的过程
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/10480875.html
Copyright © 2011-2022 走看看