Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有人在用户代码(非本机)中创建了类似PHP会话的类?_Php_Session_Session State_Userland - Fatal编程技术网

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

是否有人在用户代码(非本机)中创建了类似PHP会话的类?,php,session,session-state,userland,Php,Session,Session State,Userland,本机PHP会话功能非常好,但它最终是一个单例。有时,您需要维护多个应用程序的状态以及已启动会话的范围(例如,在应用程序框架中)。从技术上讲,人们可以在更改会话\u name()后停止/重新启动会话,但这在大多数应用程序中是不切实际/不可能/不安全的。如果一个应用程序使用非磁盘适配器存储会话数据,则使用共享的会话。保存路径也不是一个选项 没有理由不能在用户代码中完成本机会话中的功能,那么有人这样做了吗 更新1:确实是一个用户域实现,包含一些有用的代码,但它与CodeIgniter高度耦合 更新2:

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

没有理由不能在用户代码中完成本机会话中的功能,那么有人这样做了吗

更新1:确实是一个用户域实现,包含一些有用的代码,但它与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
更新3:PHP5.3的

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

我写了这篇文章作为回应

它是“会话”的纯PHP实现,可用于在任意PHP应用程序之间桥接会话。它不干扰本机会话,有一个OO存储API(更像PHP5.4),还有一个类似于本机会话的API


它附带了存储处理程序和一个接口,使您更容易编写自己的会话处理程序。

我相信code igniter可以做到这一点。您可以使用,使用您想要的任何类型的后端存储系统。您想在多个应用程序中共享单个会话吗?+1感谢您提出这个问题-以及可能出现的任何答案-这是我从未想到过的伟大功能。@Marc B:问题在于不能同时激活两个会话。谢谢,这可能是一个不错的开始;它与CI高度耦合。是的,我实际上没有看它的代码,我只是意识到它的存在。希望有帮助!:)接受你的答案,但真正的答案似乎是“不是真的”:)很抱歉,你没有得到更全面的答案-如果你继续研究,祝你好运!