先開啟監聽后,就可以添加過期任務了
一:配置redis
~~~
notify-keyspace-events "Ex"
~~~
寶塔的直接在redis里面配置即可(記住要雙引號,配置后重啟)
二:添加一個監聽任務(監聽過期的方法)和添加任務(設置redis緩存)
添加任務start-------------------------------------------------------------
```
$redis = new \Redis();
//連接本地的 Redis 服務
$redis->connect("127.0.0.1", 6379);
//這個key是最主要的交互數據,里面隨便傳自己需要的參數
$key = base64_encode(json_encode(['order'=>'Dc2021042314551110210010180531','type'=>'1','time'=>time()]));
$redis->set($key, "123456789",300);設置為300秒后過期 (自己修改)
```
添加任務end-----------------------------------------------------------------------------
監聽任務start---------------------------------------------------------------
項目根目錄創建文件 redis_task.php (文件名隨意)
執行監聽 (php redis_task.php)
```
<?php
//redis時間到期銷毀執行
function run_task($redis, $pattern, $chan, $key)
{
//
// echo "Pattern: $pattern\n";
// echo "Channel: $chan\n";
// echo "Msg: $key\n";
$data = json_decode(base64_decode($key),true);
$domain = 'http://tool.he4966.cn';
if($data){
switch ($data['type']) {
case '1':
//寫需要執行的接口 自行修改
echo file_get_contents($domain.'/api/order/query_baochang_pay_order?order='.$data['order']);
break;
case '2':
# code...
break;
default:
# code...
break;
}
}
var_dump($data);
}
$redis = new \Redis();
//連接本地的 Redis 服務 可以更改自己的
$redis->connect("127.0.0.1", 6379);
$redis->setOption(\Redis::OPT_READ_TIMEOUT,-1);
echo "訂閱任務消息監聽..".PHP_EOL;
$redis->psubscribe(array('__keyevent@0__:expired'), 'run_task');
```
監聽任務end--------------------------------------------------