自定义session处理 关于read write顺序有关问题

WBOY
풀어 주다: 2016-06-13 12:17:45
원래의
837명이 탐색했습니다.

自定义session处理 关于read write顺序问题

本帖最后由 hxx_yang 于 2015-04-10 13:00:11 编辑 header("content-type:text/html;charset=utf-8");

define('SESSION_PRE', 'XX_');
define('BR', '
');
function start ($savePath , $sessionName) {
    global $sessionPath;
    $sessionPath = $savePath . DIRECTORY_SEPARATOR;
    echo __METHOD__ . BR;
    return true;
}

function close () {
    echo __METHOD__ . BR;
    return true;
}

function read ($sessionId) {
    global $sessionPath, $sessionFile;
    $sessionFile = $sessionPath . DIRECTORY_SEPARATOR . ESSION_PRE . $sessionId;
    echo __METHOD__ . BR;
    return @file_get_contents($sessionFile);
    
}

function write ($sessionId , $data) {
    global $sessionFile;
    $sessionFile = $sessionPath . DIRECTORY_SEPARATOR . ESSION_PRE . $sessionId;
    echo __METHOD__ . BR;
    return @file_put_contents($sessionFile,$data);
}

function destroy ($sessionId) {
    global $sessionFile;
    @unlink($sessionFile);
    echo __METHOD__ . BR;
    return true;
}

function gc ($maxLifeTime) {
    echo __METHOD__ . BR;
    global $sessionPath;
    foreach(glob($sessionPath."/*") as $file){
if (filemtime($file)+$maxLifeTime     @unlink($file);
}
    }
    return true;
}
session_set_save_handler("start", "close", "read", "write", "destroy", "gc");

session_start();      //101行
$_SESSION['name'] = 'Lielei';          //102行
print_r($_SESSION);          //103行
?>

问题描述:
         按我的理解session_start()开启后,依次运行的函数是 start , read, write , close。
官方资料:PHP 会在脚本执行完毕或调用 session_write_close() 函数之后调用write函数。

那么,在第一次运行此脚本到103行时,为什么会输出Lilei呢,此时$_SESSION中的数据是
从session文件中读取出来的吗?如果是,脚本不是还没有结束吗,怎么会执行write呢?如果不是,
此时的$_SESSION只是相当于普通的数组吗?103行不过是输出一个普通的数组而已嘛?
------解决思路----------------------
頁面未結束,不會執行session_write_close(); 所以不會更新到session文件,你讀取的只是內存中的session的值。
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!