


L'influence du partage de la connexion redis et select
des méthodes dans le cadre de Laravel
Lorsque vous utilisez Redis dans le cadre Laravel, les développeurs peuvent rencontrer un problème: la connexion Redis obtenue via le fichier de configuration affectera la même connexion obtenue avant de changer la base de données à l'aide de select
. Cet article analyse ce problème et fournit des solutions.
Description du problème: Supposons que le code obtient une connexion redis nommée 'config1' via Redis::connection('config1')
, et sa configuration est la suivante:
'config1' => [ 'host' => 'xx', 'mot de passe' => 'xx', 'port' => 'xx', «base de données» => 2 ]]
Obtenez la connexion «config1» deux fois et effectuez select(3)
sur l'une des connexions pour passer à la base de données 3:
$ a = redis :: connection ('config1'); $ b = redis :: connection ('config1'); $ b-> select (3); $ a-> set ('test1', 1); // «Test1» écrit dans la base de données 3, pas la base de données attendue 2
$b
résultat de $ a- $a
$a->set('test1', 1)
est surprenant, car les données attendues doivent être écrites dans la base de données 2. En effet
\Illuminate\Support\Facades\Redis
du framework Laravel renvoie redis
via getFacadeAccessor
, et redis
est implémenté par \Illuminate\Redis\RedisManager
. La méthode connection
de \Illuminate\Redis\RedisManager
mettra en cache la connexion après le premier analyse, et les appels suivants renverront directement la même instance redis.
Par conséquent, pour éviter ce problème, vous ne pouvez pas appeler Redis::connection()
plusieurs fois pour obtenir une connexion autonome. La solution consiste à créer une nouvelle instance de connexion en utilisant la méthode resolve
de Laravel:
$ a = app ('redis') -> connection ('config1'); $ b = app ('redis') -> connection ('config1'); $ b-> select (3); $ a-> set ('test1', 1); // 'test1' va maintenant écrire dans la base de données 2
Utilisez app('redis')->connection('config1')
pour créer une nouvelle instance de connexion à chaque fois, en évitant le problème de partager la même connexion redis sous-jacente et de garantir que chaque connexion a une sélection de base de données indépendante. Cela résout le problème que select
affecte les autres connexions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于单点登录的相关问题,单点登录是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于Laravel的生命周期相关问题,Laravel 的生命周期从public\index.php开始,从public\index.php结束,希望对大家有帮助。

在laravel中,guard是一个用于用户认证的插件;guard的作用就是处理认证判断每一个请求,从数据库中读取数据和用户输入的对比,调用是否登录过或者允许通过的,并且Guard能非常灵活的构建一套自己的认证体系。

laravel中asset()方法的用法:1、用于引入静态文件,语法为“src="{{asset(‘需要引入的文件路径’)}}"”;2、用于给当前请求的scheme前端资源生成一个url,语法为“$url = asset('前端资源')”。

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于使用中间件记录用户请求日志的相关问题,包括了创建中间件、注册中间件、记录用户访问等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于中间件的相关问题,包括了什么是中间件、自定义中间件等等,中间件为过滤进入应用的 HTTP 请求提供了一套便利的机制,下面一起来看一下,希望对大家有帮助。

laravel路由文件在“routes”目录里。Laravel中所有的路由文件定义在routes目录下,它里面的内容会自动被框架加载;该目录下默认有四个路由文件用于给不同的入口使用:web.php、api.php、console.php等。

在laravel中,scope用于处理模型中的数据,在模型中可以定义scope开头方法,这类方法可以通过模型直接调用,被称为查询作用域,语法为“public function scope首字母大写单词($query){...}”。


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver CS6
Outils de développement Web visuel

Version Mac de WebStorm
Outils de développement JavaScript utiles