久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

利用php-cli和任務計劃實現刷新token功能的方法

下面小編就為大家帶來一篇利用php-cli和任務計劃實現刷新token功能的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、業務需求

需要實現這樣一個功能:在第三方授權的認證當中,在用戶首次登錄授權我們會得到一個access_token,有效期為25小時,還會得到一個refresh_token,有效期為30天。

我們只要保存好這個refresh_token,在30天內我們都可以用這個refresh_token去請求一個api,他會返回一個新的access_token。這樣我們只需要讓用戶授權一次,我們就可以獲得長達30天的一個授權期限。

這里可以分為幾個點:

<1>這個應該是要定期執行的一個任務。

25小時才會過期,那么我們12小時刷一次就足夠了,并不需要很頻繁的刷新。假設這樣一種情況:讓一個頁面持續的運行,用一個while的死循環去執行一個任務,執行完之后sleep很長一段時間,然后再繼續執行。這樣做也是可以的,但是比較占資源。他執行的時間很少,等待的時間卻很長,沒必要這樣一直等待。

<2>這個應該不需要是一個可以訪問到的頁面。

是我們內部執行的一個任務,不需要是人人可以訪問到的一個頁面。

<3>這個頁面應該也要和框架融合在一起,可以訪問到各種資源。

一個普通的php頁面恐怕是不行的,我們需要跟框架融合的一個頁面,需要可以訪問到各種資源,比如說redis,比如說config,等等。

2、用cli模式運行codeigniter的頁面

<1>cli的頁面特性

什么是cli模式?就是命令行模式。我們可以不用url來訪問php頁面,而使用命令行來訪問,這是可以的。

對頁面來說,什么都不需要改變,比如:

>同樣要是一個普通的controller,要繼承自CI_Controller;

>要定義路由器,這個頁面必須也是經由路由訪問得到;

>甚至仍然可以添加這樣的聲明

defined('BASEPATH') OR exit('No direct script access allowed');

>可以通過添加一個判斷讓頁面只能讓cli訪問:

  public function __construct()
  {
    parent::__construct();
    if (!is_cli())
      exit("不正確的訪問方式");
  }

>通過echo打印在命令行上面,就如打印在頁面上一樣

<2>怎么通過命令行訪問

cd E:\xxx\xxx\phpSite  //網站的根目錄,即index.php所在目錄

php index.php aaa bbb ccc  //即訪問網址為yourdomain.com/index.php/aaa/bbb/ccc這樣的地址注意:

>第一行是轉到網站根目錄這個路徑;

>第二行php是調用了php.exe這個是因為我們有設置php的環境變量;

>index.php不可以缺少,因為這里我們沒有走服務器了,沒有經過服務器的url-rewrite,所以這個index.php是必不可少的。

我們可以將這兩行代碼放在一個文本文件里面,將名字改為refresh.bat,雙擊這個bat文件,他就會執行一次,相當于打開命令行來執行

如果我們需要調試的話,不要讓彈出的命令行自動關掉,我們可以在加上第三行代碼,加一個單詞就可以了:pause

他就會停住并且顯示相關的信息方便我們調試。

<3>頁面調試

如下例子,此頁面通過把一個值每刷新頁面一次累加一次,存在redis里,來驗證頁面是否有被訪問過:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
 * Created by PhpStorm.
 * Date: 2017/2/20
 * Time: 23:18
 */
class Refresh_token extends CI_Controller
{
  public function __construct()
  {
    parent::__construct();
    if (!is_cli())
      exit("不正確的訪問方式");
  }
  public function index()
  {
    $oldData = $this->redis_model->get_access_token('1234');
    if ($oldData == null)
      $oldData = 0;
    $newData = $oldData + 1;
    $this->redis_model->set_access_token('1234',$newData);
    echo 'its refresh_token page!';
  }
}

3、創建計劃任務讓他運行bat文件

利用php-cli和任務計劃實現刷新token功能的方法

利用php-cli和任務計劃實現刷新token功能的方法

利用php-cli和任務計劃實現刷新token功能的方法

利用php-cli和任務計劃實現刷新token功能的方法

4、刷新token

<1>命名的規則

刷新token首先想到的是遍歷redis。redis那么多應該怎么遍歷?我想到的是給不同類型redis設定不同的前綴。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

下面小編就為大家帶來一篇利用php-cli和任務計劃實現訂單同步功能的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 一区二区三区免费网站 | 一区二区在线不卡 | 91伊人| 天天拍天天操 | 国产精品成人品 | 911影院| 伊人久久精品一区二区三区 | 亚洲国产高清在线观看 | www.精品一区 | 久久精品亚洲精品国产欧美kt∨ | 成年人在线视频 | 亚洲天堂av在线 | 日韩一二区 | 亚洲品质自拍视频 | 一区二区三区四区国产 | 一级毛片,一级毛片 | 久久专区 | 久久久久黄色 | 久久精品欧美一区二区三区不卡 | 日韩一区二区三区在线 | 国产2区 | 毛片av免费在线观看 | 久久精品国产亚洲一区二区 | 国产成人精品久久二区二区 | 日韩视频高清 | 男人电影天堂 | 久久美国| 一区二区福利视频 | 久久久久久国产 | 日本三级全黄三级a | 久久久精品影院 | 国产精品揄拍一区二区久久国内亚洲精 | 亚洲日韩中文字幕 | 99福利视频 | 日韩手机在线视频 | 日本福利视频 | 久久久www成人免费精品张筱雨 | 亚洲综合字幕 | 国产精品毛片无码 | 欧美不卡一区二区三区 | 免费视频二区 |