PHP $ _SESSION可以保存大文件吗?

时间:2011-10-05 20:37:47

标签: php post session-variables

我正在用PHP构建一个多页面的表单。我将大部分值存储在$ _SESSION中。使用以下方法...

$_SESSION['title'] = $_POST['title'];

到目前为止工作正常,但我不确定它是否能够保存PDF,视频等。

$ _SESSION只包含字符串& intigers,或文件存储在那里?

6 个答案:

答案 0 :(得分:7)

$ _SESSION的最大大小是PHP脚本允许的最大内存,但如果你达到1/3,你可能会做错了。

$_SESSION通常只应用于保留用户对大多数网站页面浏览量所需的信息。 高度不太可能,您实际上需要在每个页面上都有一个文件。

这是一个更好的选择,将临时文件存储在磁盘上并在$_SESSION中分配临时文件的路径。然后,当您需要它时,将文件读给用户。

答案 1 :(得分:5)

我建议您不要存储大值,因为此信息存储在您的服务器中。如果要保留对这些文件的引用,则应序列化包含这些文件路径的PHP对象。

编辑: 会话在运行时加载到内存中,因此理论上它受php.ini中memory_limit的限制。

答案 2 :(得分:2)

我不确定您是否能够将整个文件存储到$ _SESSION中,但您可以将文件上传到服务器并仅存储该文件的路径。

答案 3 :(得分:1)

默认情况下,会话存储为服务器上的文件。唯一的限制是PHP脚本内存限制 - 例如64MB,可以控制。文件可以以二进制和文本格式存储,但我会质疑是否需要这样做 - 毕竟,为什么要这样做?

答案 4 :(得分:1)

你可以在理论上讲述会话变量中的二进制数据,但它不会被视为最佳实践。

此外,如果您打算在会话中存储大数据,您可能需要阅读: Maximum size of a PHP session

你真的需要生成一个ID,并且最好在你去的时候与其他表单元素响应一起存储在数据库中。

答案 5 :(得分:0)

$_SESSION存储在服务器上的php.ini

中定义的文件夹中

只要您的服务器有空间,您就可以在$_SESSION

上存储任何内容