有没有人在用户代码中创建类似PHP会话的类(非本机)?

Ste*_*lay 7 php session session-state userland

本机PHP会话功能很棒,但它最终是一个单例.有时您需要维护多个应用程序的状态以及已启动会话的范围(例如,在应用程序框架中).从技术上讲,人们可以在更改后停止/重新启动会话session_name(),但这在大多数应用程序中是不切实际/不可能/不安全的.session.save_path如果一个应用程序使用非磁盘适配器存储会话数据,则也不能使用共享.

本机会话中的功能无法在用户代码中完成,所以有人这样做了吗?

更新1: CI_Session确实是一个带有一些有用代码的用户态实现,但它与CodeIgniter高度耦合.

更新2:这是一个很棒的API:

// setup
$saveHandler = new UserlandSession_SaveHandler_Files('5;/tmp');
$sess = new UserlandSession($saveHandler);
$sess->name('PHPSESSID2');
$sess->gc_maxlifetime = 86400;
$sess->setProxy($state); // passed by ref
// usage
$sess->start(); // stored string unserialized to $state
$state['foo'] = 'bar';
$sess->write_close(); // $state serialized to storage
Run Code Online (Sandbox Code Playgroud)

更新3: 我已经为PHP5.3 编写了一个实现.

Sea*_*lsh 2

CodeIgniter 有一个不使用本机 PHP 会话的会话类。