Laravel Redis Connection 공유 : 선택 메소드가 다른 연결에 영향을 미치는 이유는 무엇입니까?
Laravel Framework에서 Redis 연결 공유 및 select
메소드의 영향
Laravel Framework에서 Redis를 사용할 때 개발자는 문제가 발생할 수 있습니다. 구성 파일을 통해 얻은 Redis 연결은 select
메소드를 사용하여 데이터베이스를 전환하기 전에 얻은 동일한 연결에 영향을 미칩니다. 이 기사는이 문제를 분석하고 솔루션을 제공합니다.
문제 설명 : 코드가 Redis::connection('config1')
통해 'config1'이라는 Redis 연결을 얻고 다음과 같습니다.
'config1'=> [ '호스트'=> 'xx', '암호'=> 'xx', '포트'=> 'xx', '데이터베이스'=> 2 ]]
'config1'연결을 두 번 가져 와서 연결 중 하나에서 select(3)
수행하여 데이터베이스 3으로 전환하십시오.
$ a = redis :: connection ( 'config1'); $ b = redis :: connection ( 'config1'); $ b-> select (3); $ a-> set ( 'test1', 1); // 'test1'은 데이터베이스 3, 예상되지 않음 데이터베이스 2에 씁니다.
예상 데이터가 데이터베이스 2에 기록되어야하기 때문에 $a->set('test1', 1)
의 결과는 놀랍습니다. 이는 Laravel 프레임 워크의 Redis 연결 관리 메커니즘으로 인해 $a
와 $b
실제로 동일한 Redis 연결 객체를 참조하기 때문입니다.
Laravel 프레임 워크의 \Illuminate\Support\Facades\Redis
facade는 getFacadeAccessor
메소드를 통해 redis
반환하며 redis
\Illuminate\Redis\RedisManager
에 의해 구현됩니다. \Illuminate\Redis\RedisManager
의 connection
방법은 첫 번째 구문 분석 후 연결을 캐시하며 후속 통화는 동일한 Redis 인스턴스를 직접 반환합니다.
따라서이 문제를 피하기 위해 독립형 연결을 얻으려면 Redis::connection()
여러 번 호출 할 수 없습니다. 솔루션은 Laravel의 resolve
메소드를 사용하여 새 연결 인스턴스를 작성하는 것입니다.
$ a = app ( 'redis')-> connection ( 'config1'); $ b = app ( 'redis')-> connection ( 'config1'); $ b-> select (3); $ a-> set ( 'test1', 1); // 'test1'은 이제 데이터베이스 2에 씁니다
app('redis')->connection('config1')
사용하여 매번 새 연결 인스턴스를 생성하여 동일한 기본 Redis 연결을 공유하는 문제를 피하고 각 연결에 독립적 인 데이터베이스 선택이 있는지 확인하십시오. 이것은 select
메소드가 다른 연결에 영향을 미친다는 문제를 해결합니다.
위 내용은 Laravel Redis Connection 공유 : 선택 메소드가 다른 연결에 영향을 미치는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpsessionscanstorestrings, 숫자, 배열 및 객체 1.Strings : TextDatalikeUsernames.2.numbers : integorfloatsforcounters.3.arrays : listslikeshoppingcarts.4.objects : complexStructuresThatareserialized.

세션 재생은 세션 고정 공격의 경우 사용자가 민감한 작업을 수행 할 때 새 세션 ID를 생성하고 이전 ID를 무효화하는 것을 말합니다. 구현 단계에는 다음이 포함됩니다. 1. 민감한 작업 감지, 2. 새 세션 ID 생성, 3. 오래된 세션 ID 파괴, 4. 사용자 측 세션 정보 업데이트.

PHP 세션은 응용 프로그램 성능에 큰 영향을 미칩니다. 최적화 방법은 다음과 같습니다. 1. 데이터베이스를 사용하여 세션 데이터를 저장하여 응답 속도를 향상시킵니다. 2. 세션 데이터 사용을 줄이고 필요한 정보 만 저장하십시오. 3. 비 차단 세션 프로세서를 사용하여 동시성 기능을 향상시킵니다. 4. 사용자 경험과 서버 부담의 균형을 맞추기 위해 세션 만료 시간을 조정하십시오. 5. 영구 세션을 사용하여 데이터 읽기 및 쓰기 시간의 수를 줄입니다.

phpsessionsareser-side, whilecookiesareclient-side.1) sessions stessoredataontheserver, andhandlargerdata.2) cookiesstoredataonthecure, andlimitedinsize.usesessionsforsensitivestataondcookiesfornon-sensistive, client-sensation.

phpidifiesauser의 sssessionusessessioncookiesandssessionids.1) whensession_start () iscalled, phpgeneratesauniquessessionStoredInacookienamedPhpsSessIdonSeuser 'sbrowser.2) thisidallowsphptoretrievessessionDataTromServer.

PHP 세션의 보안은 다음 측정을 통해 달성 할 수 있습니다. 1. Session_REGENEREAT_ID ()를 사용하여 사용자가 로그인하거나 중요한 작업 일 때 세션 ID를 재생합니다. 2. HTTPS 프로토콜을 통해 전송 세션 ID를 암호화합니다. 3. 세션 _save_path ()를 사용하여 세션 데이터를 저장하고 권한을 올바르게 설정할 보안 디렉토리를 지정하십시오.

phpsessionfilesarestoredInTheRectorySpecifiedBysession.save_path, 일반적으로/tmponunix-likesystemsorc : \ windows \ temponwindows.tocustomizethis : 1) austession_save_path () toSetacustomDirectory, verlyTeCustory-swritation;


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.
