PHP 세션의 유효하지 않은 분석 데이터에 대한 자세한 그래픽 및 텍스트 설명
세션은 개발 시 매우 중요한 데이터 저장 변수입니다. 서로 다른 페이지 간에 값을 전송할 수 있습니다. 만료되어 유효하지 않은 세션을 사용할 때 발생할 수 있는 몇 가지 문제를 소개하겠습니다.
관련 주제 추천: php 세션 (사진, 텍스트, 동영상, 사례 포함)
php 세션 유효하지 않은 분석
PHP 개발 과정에서 일부 친구들이 자주 접할 수 있습니다. 세션을 자동으로 지울 수 없다는 것은 실제로 지울 수 없는 것은 아니지만 사이트 방문 수가 충분히 크면 해당 파일이 자동으로 지울 수 있는 가능성의 문제입니다. 방문 횟수가 상대적으로 적고 파일이 보기에 좋지 않은 경우 php.ini를 구성하여 세션 파일을 자동으로 지우는 기능을 구현할 수 있습니다. 구체적인 구성은 다음과 같습니다.
Find
session.gc_probability = 1
session .gc_pisor = 1000
위의 두 매개변수는 실제로 이 확률입니다. 기본적으로는 1/1000
session.gc_pisor = 1000을 session.gc_pisor = 100으로 변경하세요
-time, 그러면 이 매개변수를 1로 변경할 수 있으므로 확률은 100%입니다.
세션 작동 방식을 확인하세요
개요: 모든 PHP 요청은 "세션 재활용"을 트리거할 확률(기본값)이 1/100입니다." . "세션 재활용"이 발생하면 /tmp/sess_* 파일이 확인됩니다. 마지막 수정 시간이 1440초(gc_maxlifetime 값)를 초과하면 삭제되며, 이는 해당 세션이 만료되었음을 의미합니다.
1. 세션은 서버 측(일반적으로 PHP 모듈이 있는 Apache)에 어떻게 존재합니까?
기본적으로 PHP는 세션을 /tmp 디렉터리에 저장하며 파일 이름은 sess_01aab840166fd1dc253e3b4a3f0b8381과 같습니다. 각 파일은 세션에 해당합니다.
more /tmp/sess_01aab840166fd1dc253e3b4a3f0b8381 username|s:9:”jiangfeng”;admin|s:1:”0〃;
#변수명|유형: 길이: 값
여기서 세션 파일을 삭제한다는 것은 해당 세션이 유효하지 않다는 의미입니다.
2. 클라이언트 측(보통 브라우저)에서는 세션이 어떻게 존재하나요?
세션은 브라우저 측에 있으므로 세션 ID(서버 측에서 생성된 고유 ID)만 저장하면 됩니다. 저장하는 방법에는 쿠키와 URL의 두 가지가 있습니다. 쿠키에 세션ID가 저장되어 있으면 브라우저의 쿠키에 PHPSESID 변수가 있는 것을 확인할 수 있습니다. URL로 전달되면
index.php?PHPSESID=01aab840166fd1dc253e3b4a3f0b8381 형식으로 URL을 볼 수 있습니다. (서버 측에서는 session.use_cookies를 사용하여 어떤 메소드를 사용할지 제어합니다.)
3. 서버 측에서 PHP는 세션 파일이 만료되었는지 어떻게 확인합니까?
"현재"에 대한 "마지막 수정 시간"이 gc_maxlifetime(기본값은 1440)초를 초과하면 세션 파일이 만료된 것으로 간주됩니다. 파일이 변경되지 않은 경우 다음 세션 재활용 중에 세션 파일이 삭제됩니다. (세션이 만료됩니다).
간단히 말하면, 웹사이트에 로그인하고 1440초(기본값) 이내에 아무런 조작이 없으면 해당 세션이 만료된 것으로 간주됩니다.
그러므로 php.ini 파일의 gc_maxlifetime 변수를 수정하여 세션 만료 시간을 연장하세요. (예: 만료 시간을 86400초로 수정합니다.)
session.gc_maxlifetime = 86400
그런 다음 A를 다시 시작하세요. 웹 서비스(보통 apache)가 그렇게 할 것입니다.
참고: PHP5는 세션이 만료되면 재활용 메커니즘을 사용합니다. 여기에 설정된 시간은 86400초입니다. 86400초 이내에 세션이 수정되지 않으면 다음 "재활용"까지 삭제되지 않습니다.
4. 세션 "재활용"은 언제 발생하나요?
기본적으로 모든 PHP 요청에 대해 재활용 확률은 1/100이므로 간단히 "100개의 PHP 요청마다 한 번의 재활용이 발생합니다"라고 간단히 이해하면 됩니다. 이 확률은 다음 매개변수에 의해 제어됩니다
# 확률은 gc_probability/gc_pisor
session.gc_probability = 1
session.gc_pisor = 100
참고 1: 이 경우 세션 파일이 gc_maxlifetime=120이라고 가정합니다. 마지막입니다. 수정 시간이 120초 전이면 다음 재활용(1/100 확률)이 발생할 때까지 세션이 계속 유효합니다.
참고 2: 세션이 session.save_path를 사용하여 세션을 다른 곳에 저장하는 경우 세션 재활용 메커니즘이 만료된 세션 파일을 자동으로 처리하지 못할 수 있습니다. 이때 만료된 세션을 정기적으로(또는 crontab) 삭제해야 합니다.
cd /path/to/sessions; find -cmin +24 | xargs rm
5. 因为回收机制会检查文件的“最后修改时间”,所以如果某个会话是活跃的,但是session的内容没有改变过,那么对应的session文件也就没有改变过,回收机制会认为这是一个长时间没有活跃的session而将其删除。这是我们不愿看到的,可以通过增加如下的简单代码解决这个问题: 代码会每隔60秒,尝试修改修改一次session。 我们下面来详细看看一些其它的设置session时间的问题 Session 过期时间参数 设定过期时间参数, 主要是设定 session.gc_maxlifetime 的参数即可, 再保险一点的设定, 就设定下面这两个参数. session_cookie_lifetime 设为 0 的话, 代表等到 browser 才把此 cookie 清掉.(session 和 browser cookie 是有相关的) 如果懒得想这些, 直接用下面的 function 就可以了 Session 过期时间程式 使用方式 于程式最上方加入: start_session(600); // 代表 600 秒后会过期 (取代原本 session_start()) 但是有个问题要注意, 就是 PHP 的 session 预设是存成 file, 所以 /tmp 可能会因这样设定而爆掉(档案太多), 通常解法是把 session 存进 DB/memcache 中. 以上就是本文的全部内容,希望对大家的学习有所帮助。 相关推荐: php及codeigniter使用session-cookie的方法详解 위 내용은 PHP 세션의 유효하지 않은 분석 데이터에 대한 자세한 그래픽 및 텍스트 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!<?php
if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60)
$_SESSION['last_access'] = time();
?>
总结:如果想修改session过期时间,修改变量gc_maxlifetime就可以了。php5的session采用被动的回收机制(garbage collection)。过期的session文件不会自己消失,而是通过触发“回收”来处理过期的session。ini_set('session.cookie_lifetime', 0); // 可用 print_r(session_get_cookie_params()); 观察
ini_set('session.gc_maxlifetime', 3600); // 可用 echo ini_get("session.gc_maxlifetime"); 观察
<?php
function start_session($expire = 0)
{
if ($expire == 0) {
$expire = ini_get('session.gc_maxlifetime');
} else {
ini_set('session.gc_maxlifetime', $expire);
}
if (empty($_COOKIE['PHPSESSID'])) {
session_set_cookie_params($expire);
session_start();
} else {
session_start();
setcookie('PHPSESSID', session_id(), time() + $expire);
}
}
?>
如果要再延长过期时间, 只要再做修改即可.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
