RefreshBookLimit.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /*
  3. * RefreshBookLimit 刷新袋鼠屏蔽书籍缓存
  4. */
  5. namespace app\admin\command;
  6. use app\common\library\Redis;
  7. use think\console\Command;
  8. use think\console\input\Option;
  9. use think\console\Input;
  10. use think\console\Output;
  11. use think\Log;
  12. use think\Request;
  13. use think\Db;
  14. class RefreshBookLimit extends Command
  15. {
  16. protected $message = '';
  17. protected function configure()
  18. {
  19. $this->setName('RefreshBookLimit')
  20. ->setDescription('刷新袋鼠屏蔽书籍缓存');
  21. }
  22. //获取公众号
  23. protected function execute(Input $input, Output $output)
  24. {
  25. Request::instance()->module('admin'); //cli模式下无法获取到当前的项目模块,手动指定一下
  26. $output->writeln("RefreshBookLimit---开始");
  27. Log::info("RefreshBookLimit---开始");
  28. $key = "BL:*";
  29. try {
  30. $redis = Redis::instance();
  31. $output->writeln("RefreshBookLimit---清除旧缓存 start");
  32. Log::info("RefreshBookLimit---清除旧缓存 start");
  33. $redis::delScan($key);
  34. $output->writeln("RefreshBookLimit---清除旧缓存 end");
  35. Log::info("RefreshBookLimit---清除旧缓存 end");
  36. $output->writeln("RefreshBookLimit---刷入新缓存 start");
  37. Log::info("RefreshBookLimit---刷入新缓存 start");
  38. Db::table('book_limit')->chunk(1000, function ($res) use ($redis, $output) {
  39. foreach ($res as $val) {
  40. $output->writeln("RefreshBookLimit---刷入新缓存 id:{$val['id']} admin_id:{$val['admin_id']} book_id:{$val['bookid']} user_id:{$val['userid']}");
  41. Log::info("RefreshBookLimit---刷入新缓存 id:{$val['id']} admin_id:{$val['admin_id']} book_id:{$val['bookid']} user_id:{$val['userid']}");
  42. $redis->hset('BL:' . $val['admin_id'], $val['bookid'], $val['userid']);
  43. }
  44. });
  45. $output->writeln("RefreshBookLimit---刷入新缓存 end");
  46. Log::info("RefreshBookLimit---刷入新缓存 end");
  47. } catch (\Exception $e) {
  48. $output->writeln('RefreshBookLimit---刷新书籍屏蔽缓存失败' . $e->getMessage());
  49. Log::error('RefreshBookLimit---刷新书籍屏蔽缓存失败' . $e->getMessage());
  50. }
  51. }
  52. }