PHP 大会日本 2024

session_module_name

(PHP 4, PHP 5, PHP 7, PHP 8)

session_module_name获取和/或设置当前会话模块

描述

session_module_name(?string $module = null): string|false

session_module_name() 获取当前会话模块的名称,也称为 session.save_handler

参数

module

如果指定了 module 且不为 null,则将使用该模块。禁止将 "user" 传递给此参数。 应改为调用 session_set_save_handler() 来设置用户定义的会话处理程序。

返回值

返回当前会话模块的名称,或在失败时返回 false

变更日志

版本 描述
8.0.0 module 现在可以为空。
7.2.0 现在明确禁止将模块名称设置为 "user"。以前,这会被静默忽略。
添加注释

用户贡献的注释 2 个注释

raees at steelbrain dot com dot pk
10 年前
此函数用于在站点或脚本级别设置会话模块。

全局配置可以在 php.ini 的 [Session] 部分下完成,名称为 "session.save_handler"。默认情况下,会话保存在文件中,如下所示
session.save_handler = files

但通过此配置,您可以将您的一个网站设置为使用其他会话模块(如果您已安装并使用 PHP 加载了扩展),如下所示
<?php

// 注意:您必须在使用 session_start(); 启动会话之前使用此函数才能使其正常工作
session_module_name('memcache'); // 或 pgsql 或 redis 等

// 如果模块不是 files,您还需要定义保存路径,如下所示:
session_save_path('localhost:11211'); // memcache 使用端口 11211

// 或者您可以使用多个进行负载均衡:
session_save_path('localhost:11211:41,otherhost:11211:60') // 第一部分是主机名或套接字路径,接下来是端口,最后是该服务器的权重

// 此函数还会返回当前会话模块的值。
echo session_module_name(); // 在我们的例子中将打印 memcache

// 或者也许是一个检查
if(session_module_name() != 'memcache'){
// 执行某些操作,也许抛出异常
}
匿名
9 年前
一直在寻找一个相当全面的模块列表,并找到了 http://stackoverflow.com/questions/8415962/what-exactly-phps-function-session-module-name-is-for,但还有更多。
To Top