本机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)
vs code 终端显示弃用警告
(节点:22063)[DEP0040] DeprecationWarning:该punycode模块已弃用。请改用用户态替代方案。(用于node --trace-deprecation ...显示警告的创建位置)
这就是问题所在。我的操作系统是 ubuntu 22.04。当我尝试将数据库与猫鼬一起使用时,问题就出现了。punycode 可以在我的 package-lock.json 文件中的某个位置看到。我自己没用过,是node自带的。
我的节点版本是 v21.0.0 ,我将其降级为 v20.9.0 然后 v18.18.0 仍然有警告。我安装了用户层模块但没有任何反应。
我理解的问题是 punycode 已被弃用,需要使用用户态替代 punycode.js 。但我不知道如何使其成为可能。
我一直在寻找一个不适合嵌入式系统并且不使用许多流行发行版中的许多 GNU 实用程序的 Linux 发行版。我想开发一个(宠物项目)Linux 发行版,它使用 musl-libc、bsd userland 和用户空间的 Plan 9。在我开始并可能浪费时间做不可能的事情之前,使用 BSD 用户区作为 GNU coreutils 的替代品是否可行/实用?如果没有,有什么替代方案?