????????4: ????????session_regenerate_id????????$_SESSION??仯
<?php
session_start();
$_SESSION['pfid'] = 123;
var_dump($_SESSION);
session_regenerate_id();
var_dump($_SESSION);
fopen(__FILE__?? "r");
[root@localhost ~]# strace -p `cat /var/run/httpd.pid`
Process 22641 attached - interrupt to quit
...
open("/var/www/html/test_session_4.php"?? O_RDONLY) = 17
fstat64(17?? {st_mode=S_IFREG|0644?? st_size=141?? ...}) = 0
lseek(17?? 0?? SEEK_CUR)                  = 0
read(17?? "<?php session_start(); $_SESSION"...?? 8192) = 141
read(17?? ""?? 8192)                      = 0
read(17?? ""?? 8192)                      = 0
close(17)                               = 0
open("/var/lib/php/session/sess_4j38nv7l1fq1bj6n80l6g9cum5"?? O_RDWR|O_CREAT?? 0600) = 17
flock(17?? LOCK_EX)                      = 0
fcntl64(17?? F_SETFD?? FD_CLOEXEC)        = 0
fstat64(17?? {st_mode=S_IFREG|0600?? st_size=11?? ...}) = 0
pread64(17?? "pfid|i:123;"?? 11?? 0)       = 11
gettimeofday({1270915896?? 122016}?? NULL) = 0
time(NULL)                              = 1270915896
open("/var/www/html/test_session_4.php"?? O_RDONLY) = 18
fstat64(18?? {st_mode=S_IFREG|0644?? st_size=141?? ...}) = 0
lseek(18?? 0?? SEEK_CUR)                  = 0
close(18)                               = 0
chdir("/var/lib/php/session")           = 0
close(17)                               = 0
open("/var/lib/php/session/sess_qoa6knu9fg77un8le99o1vk1c7"?? O_RDWR|O_CREAT?? 0600) = 17
flock(17?? LOCK_EX)                      = 0
fcntl64(17?? F_SETFD?? FD_CLOEXEC)        = 0
pwrite64(17?? "pfid|i:123;"?? 11?? 0)      = 11
close(17)                               = 0
setitimer(ITIMER_PROF?? {it_interval={0?? 0}?? it_value={0?? 0}}?? NULL) = 0
writev(16?? [{"HTTP/1.1 200 OK Date: Sat?? 10 A"...?? 386}?? {"array(1) {   ["pfid"]=>   int(12"...?? 75}]?? 2) = 461
write(12?? "192.168.0.98 - - [11/Apr/2010:00"...?? 210) = 210
shutdown(16?? 1 /* send */)              = 0
??????????????????????????session????????????????????open?????????????????????IO?????????????session????е????????????var_dump($_SESSION)??????????session?????μ????????????session????????????session_commit()?????д????????????????session_commit?????????IOд?????????session_unset()???????Ч??????????????????????????????????????κ???session????й??IOд?????????????????session_commit()???????£???session????д??session????????????session_destroy??????session??????session_destroy????????session_commit???????session???????????????session????д??session???????????????????session_commit???session???????????????
????[root@localhost html]# ls -lt /var/lib/php/session
????-rw------- 1 apache apache 31 Apr 11 03:18 sess_qoa6knu9fg77un8le99o1vk1c7
????-rw------- 1 apache apache 11 Apr 11 00:08 sess_4j38nv7l1fq1bj6n80l6g9cum5  …
???????
????1?? ??????web????????????÷???????? session_unset();  session_destroy();  unset($_SESSION);
????<?php
????function user_sigout() {
????global $user;
????sys_event_register('user_sigout'?? $user);
????session_unset();   //???session
????session_destroy();   //???session???
????if (isset($_SESSION)) {
????unset($_SESSIONI); //???$_SESSION
????}
????return TRUE;
????}
????2?? ???????????????$_SESSION????????????session_register()??????????????unset($_SESSION[‘var’])?????????session_unregister()??
????3?? ??????????????session??WEB???????????session.save_path??????session.save_path=”N:/path”?????:??Щ????????????????????httpd???????????д????????????????????????
????4?? ?????????session_regenerate_id()????????????μ?session id???ú???????????????????session?????????????????session????????????????
????5?? ??????????session_commit()??sessioin????????????????????session??PHP???????????????????????session?????session???
????Session ID????
????session?????????????????????????????????????session id?????壺?????????????????????????session id???????????????????session????????仰???session id?????????????????????????????????????????????session id??????η???(http????)????Я?????session id?????????????????????session????????????????????????????????????????????????
????????????????web???Э????http????PHP???http??????????????????????????:POST??????GET????????Cookie????PHP?????????????Cookie????????????????????????Cookie?????(???????????Cookie????)??????GET??????????session_id?????????URL??query_string???????session id??
???????????????????????б????????session id???????????????????????????????URL???????????????????????????????sockect send??????????????????Ч??Cookies????????http???????Cookie??Σ????????????????????????????????PHP??????????session??????????????$_COOKIE??????????session_name()???????洢??????(??session id)????????????????η???web?????????η?????????session??????????????????????session_id???????setcookie()???????y????????session_id??”sesseson_name = session_id”????????http????Set-Cookie??Σ????????????????????????????http?????Cookie??ζ???Я????Cookie?????web???????????????????????????????Cookies????????????$_COOKIE[‘sess_name’]??????????$_COOKIE[‘sess_name’]??????session???($_COOKIE[‘sess_name’]??session ID)????????Cookie???????????????????????????????????????????????????????η????????????
??????????????????????????????
????<?php
????//p1.php
????session_start();
??????????????http?????????
????#
????T 192.168.0.98:2290 -< 192.168.0.8:8080 [AP]
????GET /a.php HTTP/1.1..Host: 192.168.0.8:8080..Connection: keep-alive..User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1
????; en-US) AppleWebKit/533.2 (KHTML?? like Gecko) Chrome/5.0.342.3 Safari/533.2..Accept: application/xml??application/xhtml+
????xml??text/html;q=0.9??text/plain;q=0.8??image/png??*/*;q=0.5..Accept-Encoding: gzip??deflate??sdch..Accept-Language: zh-CN??zh;
????q=0.8..Accept-Charset: GBK??utf-8;q=0.7??*;q=0.3….
????##
????T 192.168.0.8:8080 -< 192.168.0.98:2290 [AP]
????HTTP/1.1 200 OK..Date: Mon?? 12 Apr 2010 08:25:11 GMT..Server: Apache/2.2.3 (CentOS)..X-Powered-By: PHP/5.1.6..Set-Cookie
????: PHPSESSID=bk7655dqrm5m884c9nitfi7j00; path=/..Expires: Thu?? 19 Nov 1981 08:52:00 GMT..Cache-Control: no-store?? no-cach
????e?? must-revalidate?? post-check=0?? pre-check=0..Pragma: no-cache..Content-Length: 0..Connection: close..Content-Type: tex
????t/html; charset=UTF-8….
????????η???/a.php??????????????????????κ?Cookie???????????Cookie????????????????php??ò?????$_COOKIE[‘PHPSESSID’](??session id???)?????????????????????????η???web??????session?????????????????????????session_id??????Cookie??????????????????
????????????????????????????????????Щ?仯:
????#
????T 192.168.0.98:2314 -< 192.168.0.8:8080 [AP]
????GET /a.php HTTP/1.1..Host: 192.168.0.8:8080..Connection: keep-alive..User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1
????; en-US) AppleWebKit/533.2 (KHTML?? like Gecko) Chrome/5.0.342.3 Safari/533.2..Cache-Control: max-age=0..Accept: applicat
????ion/xml??application/xhtml+xml??text/html;q=0.9??text/plain;q=0.8??image/png??*/*;q=0.5..Accept-Encoding: gzip??deflate??sdch..
????Accept-Language: zh-CN??zh;q=0.8..Accept-Charset: GBK??utf-8;q=0.7??*;q=0.3..Cookie: PHPSESSID=bk7655dqrm5m884c9nitfi7j00..
????..
????##
????T 192.168.0.8:8080 -< 192.168.0.98:2314 [AP]
????HTTP/1.1 200 OK..Date: Mon?? 12 Apr 2010 08:32:13 GMT..Server: Apache/2.2.3 (CentOS)..X-Powered-By: PHP/5.1.6..Expires: T
????hu?? 19 Nov 1981 08:52:00 GMT..Cache-Control: no-store?? no-cache?? must-revalidate?? post-check=0?? pre-check=0..Pragma: no-
????cache..Content-Length: 0..Connection: close..Content-Type: text/html; charset=UTF-8
???????????????http??????????????????http???????г???????????????????????Cookie???????η????????????Set-Cookie?????????????Cookie????????????????session_id?bk7655dqrm5m884c9nitfi7j00???????????????ε?http?????????????????????????ü??session_name()??Cookie???
????????????????α?????session_id?????????????????????????д???????????????:
????<?php
????$host = '192.168.0.8';
????$port = 8080;
????$path = '/p1.php';
????$sid = "PHPSESSID=dk7655dqrm5m884c9nitfi7j00";
????$fp = fsockopen($host?? $port?? $error_no?? $error_desc?? 30);
????if ($fp) {
????fputs($fp?? "GET {$path} HTTTP/1.1 ");
????fputs($fp?? "Host: {$host} ");
????fputs($fp?? "Cookie: {$sid} ");
????fputs($fp?? "Connection: close ");
????while (!feof($fp)) {
????$d .= fgets($fp?? 4096);
????}
????fclose();
????echo $d;
????}
?????????http????????????????:
????#
????T 192.168.0.98:2400 -< 192.168.0.8:8080 [AP]
????GET /p1.php HTTTP/1.1..
????Host: 192.168.0.8..Cookie: PHPSESSID=dk7655dqrm5m884c9nitfi7j00..Connection: close….
????##
????T 192.168.0.8:8080 -< 192.168.0.98:2400 [AP]
????HTTP/1.1 200 OK..Date: Mon?? 12 Apr 2010 09:03:09 GMT..Server: Apache/2.2.3 (CentOS)..X-Powered-By: PHP/5.1.6..Expires: T
????hu?? 19 Nov 1981 08:52:00 GMT..Cache-Control: no-store?? no-cache?? must-revalidate?? post-check=0?? pre-check=0..Pragma: no-
????cache..Content-Length: 11..Connection: close..Content-Type: text/html; charset=UTF-8….hello world
?????????session_id???????α???????????????????????????????????????????м?飬?????????session_id???????????session????????????httpd????????????????????????????session id(???Set-Cookie)????????????????:??http???????????????session_name()????????Cookie??????????????????????η???web???????????????session_id???????????μ?session_id???????Set-Cookie??????????????Cookie.
?????????????????£????session_regenerate_id()?????????????????μ?session_id?????
????<?php
????//@file: p2.php
????session_start();
????session_regenerate_id();
??????????http?????????
????####
????T 192.168.0.98:2763 -< 192.168.0.8:8080 [AP]
????GET /p2.php HTTP/1.1..Host: 192.168.0.8:8080..Connection: keep-alive..User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.
????1; en-US) AppleWebKit/533.2 (KHTML?? like Gecko) Chrome/5.0.342.3 Safari/533.2..Cache-Control: max-age=0..Accept: applica
????tion/xml??application/xhtml+xml??text/html;q=0.9??text/plain;q=0.8??image/png??*/*;q=0.5..Accept-Encoding: gzip??deflate??sdch.
????.Accept-Language: zh-CN??zh;q=0.8..Accept-Charset: GBK??utf-8;q=0.7??*;q=0.3..Cookie: PHPSESSID=bk7655dqrm5m884c9nitfi7j00.
????… ##
????T 192.168.0.8:8080 -< 192.168.0.98:2763 [AP]
????HTTP/1.1 200 OK..Date: Mon?? 12 Apr 2010 11:39:10 GMT..Server: Apache/2.2.3 (CentOS)..X-Powered-By: PHP/5.1.6..Expires: T
????hu?? 19 Nov 1981 08:52:00 GMT..Cache-Control: no-store?? no-cache?? must-revalidate?? post-check=0?? pre-check=0..Pragma: no-
????cache..Set-Cookie: PHPSESSID=f7q6jfdug4ekfsjhop6jftgna7; path=/..Content-Length: 0..Connection: close..Content-Type: tex
????t/html; charset=UTF-8….
????##
?????????????????http?????Cookie???????session id?????????session_id???????????η???web????????????????Σ?http??????????????http?????Щ????????????????η??????????Set-Cookie???????????????????????session id??????ζ??:session_genrate_id()????????????????session id??????Cookie??????????
????1??User01??User02??????????/p1.php??????????????session id??
????2??User01??User02????η???web???????????/p1.php?????session_id
????3??User01?????????/p2.php?????/p2.php?е?session_regenerate_id()?????User01???·??????????session_id???????User01??4?η????session_id??????ó?????????漸???ε?session_id??????
????4??User02?????з???/p2.php?????б?????????·???session id???????????????η????session_id??session id??????й??php.ini????
????1??session.use_cookie = 1
??????????Cookie????????session id????????1????????á?
????2??session.name = PHPSESSID
??????????Cookie????sessioin_id??????GET????????session_id?????????ü????????????????Cookie:  sess_name=session_id;??/path.php?sess_name=session_id??????sess_name?????????????
????3??session.use_only_cookies = 0
???????????Cookie ?????????session id???????????????cookie???????????cookie??????GET??????GET?????????????????????????????cookie??????????GET????????session_id???????????????t???GET????????session_id??
????4??session.cookie_lifetime = 0?? session.cookie_path = / ???session.cookie_domain =
??????????Cookie????????session_id????????????????cookie??Ч??????????????setcookie()???????β?$expire??$path??$domain??????cookie_lifetime=0???????????????????Cookie???????????session_set_cookie_params()?????????Щ???
????5??session_name([string $name])
????????????session_name?????????name???????????????????PHPSESSID(??session.name)??????????????session_name?????:???????session_name?????????session_start()?????ò???Ч??
????6??session_id([string $id])
??????session_name()?????????????????????session_id????????????????session_id???????????session_start()?????ò???Ч??
????7??session_set_cookie_params()??session_get_cookie_params()
???????session_set_cookie_params()?????????趨session.cookie_lifetime?? session.cookie_path???session.cookie_domain??????php.ini???á???session_get_cookie_params()????????Щ?趨?????
????Session????
?????????????????????????session?????????????????session.save_path???У?????????????????Cookie????????????????session id???????session?????Ч????????????????(????)???????????:
????1???????:????????session????????PHP GC?????
????2???????:??洢?????session_id???????Cookie?????????????Cookie??Expire????????????????????Cookie??
?????????:????????session???
????PHP GC?????????????????session.save_path??????????session?????????session???????ν???????session???????????????????session?????????????????session.gc_maxlifetime???????session??????????????:????????????????????????????п??????б????????????????????????session???????????????????PHP GC?????????GC?????????php??????Ч???????????????????????????php.ini?趨session.gc_probability / session.gc_divisor???????t?????????????1%(1/1000)??????ζ????1000??????????У??????1??PHP GC????session????????磬???????濴??????????session??????????:
????# date;find /var/lib/php/session -type f -atime -1440 -print |xargs ls -lt
????-rw------- 1 apache apache  0 Apr 12 20:01 /var/lib/php/session/sess_5tlaq5a8im3ob1bikn62motpv7
????-rw------- 1 apache apache  0 Apr 12 19:39 /var/lib/php/session/sess_f7q6jfdug4ekfsjhop6jftgna7
????-rw------- 1 apache apache  0 Apr 12 17:03 /var/lib/php/session/sess_dk7655dqrm5m884c9nitfi7j00
?????????????????????????????php session??GC????
<?php
//@file session_gc.php
ini_set("session.gc_probability"?? 100);
ini_set("session.gc_divisor"?? 100);
ini_set("session.gc_maxlifetime"?? 1440);
session_start();
[root@localhost ~]# strace -p `cat /var/run/httpd.pid`
open("/var/www/html/session_gc.php"?? O_RDONLY) = 17
fstat64(17?? {st_mode=S_IFREG|0644?? st_size=144?? ...}) = 0
lseek(17?? 0?? SEEK_CUR)                  = 0
brk(0x8d35000)                          = 0x8d35000
read(17?? "<?php ini_set("session.gc_probab"...?? 8192) = 144
read(17?? ""?? 8192)                      = 0
read(17?? ""?? 8192)                      = 0
close(17)                               = 0
open("/var/lib/php/session/sess_5tlaq5a8im3ob1bikn62motpv7"?? O_RDWR|O_CREAT?? 0600) = 17
flock(17?? LOCK_EX)                      = 0
fcntl64(17?? F_SETFD?? FD_CLOEXEC)        = 0
fstat64(17?? {st_mode=S_IFREG|0600?? st_size=0?? ...}) = 0
open("/var/lib/php/session"?? O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 18
fcntl64(18?? F_SETFD?? FD_CLOEXEC)        = 0
time(NULL)                              = 1271125492
getdents(18?? /* 13 entries */?? 32768)   = 516
stat64("/var/lib/php/session/sess_bk7655dqrm5m884c9nitfi7j00"?? {st_mode=S_IFREG|0600?? st_size=0?? ...}) = 0
unlink("/var/lib/php/session/sess_bk7655dqrm5m884c9nitfi7j00") = 0
stat64("/var/lib/php/session/sess_4j38nv7l1fq1bj6n80l6g9cum5"?? {st_mode=S_IFREG|0600?? st_size=11?? ...}) = 0
unlink("/var/lib/php/session/sess_4j38nv7l1fq1bj6n80l6g9cum5") = 0
stat64("/var/lib/php/session/sess_n660qmcl38solbmp7vkhafqg17"?? {st_mode=S_IFREG|0600?? st_size=0?? ...}) = 0
unlink("/var/lib/php/session/sess_n660qmcl38solbmp7vkhafqg17") = 0
stat64("/var/lib/php/session/sess_5tlaq5a8im3ob1bikn62motpv7"?? {st_mode=S_IFREG|0600?? st_size=0?? ...}) = 0
unlink("/var/lib/php/session/sess_5tlaq5a8im3ob1bikn62motpv7") = 0
stat64("/var/lib/php/session/sess_qoa6knu9fg77un8le99o1vk1c7"?? {st_mode=S_IFREG|0600?? st_size=31?? ...}) = 0
unlink("/var/lib/php/session/sess_qoa6knu9fg77un8le99o1vk1c7") = 0
stat64("/var/lib/php/session/sess_dutbc682k3h4cgho2sgugc0id4"?? {st_mode=S_IFREG|0600?? st_size=23?? ...}) = 0
unlink("/var/lib/php/session/sess_dutbc682k3h4cgho2sgugc0id4") = 0
stat64("/var/lib/php/session/sess_vp8lfqnskjvsiilcp1c4l484d3"?? {st_mode=S_IFREG|0600?? st_size=0?? ...}) = 0
unlink("/var/lib/php/session/sess_vp8lfqnskjvsiilcp1c4l484d3") = 0
stat64("/var/lib/php/session/sess_dk7655dqrm5m884c9nitfi7j00"?? {st_mode=S_IFREG|0600?? st_size=0?? ...}) = 0
unlink("/var/lib/php/session/sess_dk7655dqrm5m884c9nitfi7j00") = 0
stat64("/var/lib/php/session/sess_f7q6jfdug4ekfsjhop6jftgna7"?? {st_mode=S_IFREG|0600?? st_size=0?? ...}) = 0
unlink("/var/lib/php/session/sess_f7q6jfdug4ekfsjhop6jftgna7") = 0
getdents(18?? /* 0 entries */?? 32768)    = 0
close(18)                               = 0
chdir("/var/lib/php/session")           = 0
pwrite64(17?? ""?? 0?? 0)                  = 0
close(17)                               = 0
setitimer(ITIMER_PROF?? {it_interval={0?? 0}?? it_value={0?? 0}}?? NULL) = 0
writev(16?? [{"HTTP/1.1 200 OK Date: Tue?? 13 A"...?? 327}]?? 1) = 327
write(12?? "192.168.0.98 - - [13/Apr/2010:10"...?? 205) = 205
shutdown(16?? 1 /* send */)              = 0
??????????????????????????????stat64???session????????????????????????????????????????ulink()????????session??????????session??????????????GC?? GC?????session.save_path?е?????session?????????????????????????????????????????????????????????????1/1000??