PHP $ _SESSION может содержать большие файлы? - PullRequest
5 голосов
/ 06 октября 2011

Я создаю многостраничную форму с помощью PHP. Я храню большинство значений в $ _SESSION. Используя следующий метод ...

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

Пока все работает нормально, но я не уверен, сможет ли он хранить PDF, видео и т. Д.

Содержит ли $ _SESSION только строки и инициаторы или файлы могут храниться там?

Ответы [ 6 ]

7 голосов
/ 06 октября 2011

Максимальный размер $ _SESSION - это максимальный объем памяти, разрешенный для скрипта PHP, но есть вероятность, что если вы даже получите 1/3 от этого, вы делаете что-то неправильно.

$_SESSION, как правило, следует использовать только для хранения той информации, которая необходима пользователю для большинства просмотров страниц сайта. крайне маловероятно, что вам действительно понадобится файл на каждой странице.

Вот лучший вариант: сохранить временный файл на диске и назначить путь к временному файлу в $_SESSION. Затем, когда вам это нужно, прочитайте файл пользователю.

5 голосов
/ 06 октября 2011

Я не предлагаю вам хранить большую ценность, потому что эта информация хранится на вашем сервере. Вам следует сериализовать объект PHP, который будет содержать путь к этим файлам, если вы хотите сохранить некоторую ссылку на эти файлы.

Edit: Сеанс загружается в память во время выполнения, поэтому теоретически он ограничен memory_limit в php.ini.

2 голосов
/ 06 октября 2011

Я не уверен, что вы сможете сохранить весь файл в $ _SESSION, но вы можете загрузить свой файл на сервер и сохранить только путь к файлу.

1 голос
/ 06 октября 2011

Теоретически можно описать двоичные данные в переменной сеанса, однако это не будет считаться наилучшей практикой.

Также, если вы намереваетесь хранить большие данные в сеансе, вы можете прочитать это: Максимальный размер сеанса PHP

Вам действительно нужно сгенерировать идентификатор и, желательно, сохранить его в базе данных вместе с ответами других элементов формы.

1 голос
/ 06 октября 2011

По умолчанию сессии хранятся в виде файлов на сервере. Единственное ограничение - ограничение памяти PHP-скрипта - например, 64 МБ, которым можно управлять. Файлы могут храниться как в двоичном, так и в текстовом формате, но я бы поставил под сомнение необходимость сделать это - в конце концов, зачем вы это делаете?

0 голосов
/ 06 октября 2011

$_SESSION хранится на сервере в папке, где он определен в php.ini

так что, пока на вашем сервере есть место, вы можете хранить что угодно на $_SESSION

...