хранение и загрузка корзины в базу данных - PullRequest
0 голосов
/ 19 февраля 2010

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

Приложение использует Zend Framework, и я искал Zend_Session_SaveHandler_DbTable.Таким образом, я могу легко сохранить сеанс в базе данных, а в обратном случае я хочу загрузить базу данных в сеанс.

Также было бы неплохо, если бы можно было загружать эти элементы корзины только тогда, когда пользователи открывают браузер не на каждой странице, поскольку это может оказать некоторое влияние на производительность.

Есть советы?

Вид подвопроса: я полагаю, Zend_Session использует $_SESSION, поэтому все основано на идентификаторе сессии php, есть ли возможность изменить то, что он использует, имеет идентификатор.

Я думаю о создании своего уникального идентификатора и отправке его клиенту с помощью файлов cookie.

ПРИМЕЧАНИЕ 2. Пользователь может создать корзину, которая не регистрируется, поэтому я не могу полагаться на процесс входа в систему ....

Ответы [ 2 ]

1 голос
/ 25 февраля 2010

Первое, что вам нужно сделать, это выяснить, как сохранить сеансы после того, как пользователь закроет свой браузер.Проверьте часть руководства по настройке Zend_Session:

http://framework.zend.com/manual/en/zend.session.global_session_management.html

см. Часть по опции 'Remember_me_seconds'.Когда у вас все получится, все, что вы сохраните в сеансе, будет доступно, когда пользователь вернется в другой день.

Что касается хранения корзины в сеансе, я бы предложил создать класс «Корзина», содержащийИнформация.Затем вы можете либо сохранить весь объект в сеансе, либо сохранить данные в таблице «тележек» в вашей базе данных и просто сохранить идентификатор корзины в сеансе пользователя.Затем при последующих посещениях вам просто нужно проверить наличие идентификатора и загрузить корзину, если она есть.

1 голос
/ 19 февраля 2010

У меня была такая же проблема, как и у вас, когда я хотел сохранить настройки столбцов для сетки до двух слабостей. И у меня не было целой сессии в БД. Я просто проверяю сессию, есть ли что-то в корзине. Если в сеансе ничего не происходит, загрузитесь с базы данных. И при каждой смене корзины, конечно, сохраняйте в дБ.

И я использовал сериализованный массив из метода Session_Namespace :: to_array (). не весь Session_Namespace из-за того, что я не могу загрузить его обратно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...