MySqlConnection.php 956 B

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. namespace app\framework\Database;
  3. use app\common\facades\Setting;
  4. use Illuminate\Support\Facades\Redis;
  5. use function EasyWeChat\Payment\get_client_ip;
  6. class MySqlConnection extends \Illuminate\Database\MySqlConnection
  7. {
  8. public function select($query, $bindings = [], $useReadPdo = true)
  9. {
  10. if (app('db')->cacheSelect && app('db')->openCacheSelect()) {
  11. // 开启缓存
  12. $cacheKey = 'SELECT_CACHE:' . md5($query . json_encode($bindings));
  13. $result = Redis::get($cacheKey);
  14. if (!$result) {
  15. // 过期或未命中
  16. $result = parent::select($query, $bindings, $useReadPdo);
  17. Redis::setex($cacheKey, 120, json_encode($result));
  18. } else {
  19. $result = json_decode($result, true);
  20. }
  21. } else {
  22. $result = parent::select($query, $bindings, $useReadPdo);
  23. }
  24. return $result;
  25. }
  26. }