>  기사  >  백엔드 개발  >  PHP의 세션 차단 문제에 대한 해결책

PHP의 세션 차단 문제에 대한 해결책

黄舟
黄舟원래의
2017-08-08 09:41:241385검색

이 글은 주로 PHP 프로그래밍에서 세션 차단의 문제점과 해결책을 소개합니다. PHP 세션 차단의 원리와 이유, 간단한 해결 방법을 간략하게 분석합니다. 도움이 필요한 친구가 참고할 수 있습니다.

이 글은 PHP 프로그래밍의 세션을 예시로 설명합니다. . 차단 문제 및 해결 방법 참고하실 수 있도록 모든 분들과 공유해 주세요. 자세한 내용은 다음과 같습니다.

세션 사용 중 세션을 연 후 동일한 브라우저에서 동일한 프로그램을 실행하면 다른 페이지가 잠깁니다. 다른 브라우저에서는 이런 일이 발생하지 않습니다.

질문: session_start가 차단을 유발합니까?

그래서 몇 페이지를 작성해서 테스트해본 결과 세션이 차단을 유발한 반면 나머지 두 상황에서는 차단이 발생하지 않은 것으로 나타났습니다.

PHP 버그 목록을 확인한 결과 누군가 다음 질문을 한 것을 발견했습니다.

설명:
------------
session_start()를 호출하면 다른 스크립트가 종료될 때까지 기다리는 것처럼 보입니다

내 추측으로는 첫 번째 요청이
세션 파일을 독점적으로 사용하도록 잠그고 두 번째 요청은
열 수 있을 때까지 차단됩니다.

PHP의 공식 답변은 다음과 같습니다.

해 주셔서 감사합니다. 이것은 버그가 아닙니다. 이는 손상을 방지하기 위해 세션 파일이 잠겨 있는 것입니다.

차단 원인을 찾기 위해 PHP의 세션 메커니즘을 결합합니다. PHP의 세션 정보는 파일에 기록되기 때문에 하나의 클라이언트가 하나의 세션 파일을 차지합니다. 따라서 session_start가 호출되면 파일이 잠기고 읽기-쓰기 모드에서 잠깁니다(프로그램에서 세션 값을 수정해야 할 수 있으므로). 이런 방식으로 session_start에 대한 두 번째 호출이 차단됩니다. .

가장 간단한 해결책:

PHP 매뉴얼을 확인해보니 세션 데이터를 쓰는 동시에 세션을 종료하는, 즉 세션 데이터를 쓰는 동시에 세션을 닫는 session_write_close 함수를 찾았습니다. 따라서 세션이 완료된 후 이 함수를 호출하여 세션 파일을 닫고 잠금을 해제할 수 있습니다. 일반적으로 세션은 PHP가 신원 인증을 수행할 수 있도록 사용자 신원 정보를 기록하는 데 사용되므로 세션 읽기 및 쓰기는 실행 후 즉시 session_write_close 함수를 호출할 수 있습니다. .

위 내용은 PHP의 세션 차단 문제에 대한 해결책의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.