Лучше использовать сеансы php с объектами или получить доступ к БД? - PullRequest
1 голос
/ 17 июля 2009

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

То, что я пытаюсь сделать, это иметь корзину, в которую были добавлены товары, все товары в корзине нужно будет пересчитать, если будет внесено изменение в поле количества, поэтому мне было интересно, какое решение лучше , чтобы использовать объекты и сеансы или обновить большую таблицу в БД с несколькими пользователями, манипулирующими данными.

Я использую mysql db, если это помогает в принятии решения.

Ответы [ 4 ]

1 голос
/ 17 июля 2009

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

Имейте в виду, что стандартные сеансы PHP хранят данные сеансов на диске. Если на вашем сайте много пользователей с большим количеством сеансов, вполне возможно, что вы можете перегружать свою коробку слишком большим дисковым вводом / выводом. Однако, если бы у вас был SSD-накопитель, это не составило бы проблем.

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

  • Это быстрее, чем традиционный миизам или база данных innodb, потому что это не когда-либо сбрасывается на диск (это в основном влияет только на запись сеанса)

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

  • Вы можете выполнить некоторые sql wizardry на ваш магазин сессий, если вам нужно (не могу сделать это с файлами)

1 голос
/ 17 июля 2009

Сеанс должен быть намного быстрее, но он не будет сохраняться, если пользователь закроет свой браузер. Я использую сеансы для такого рода вещей (корзины покупок, последние просмотры и т. Д.) Большую часть времени. На сайте со средним-большим количеством пользователей вам нужно будет выполнить обслуживание таблицы, чтобы удалить старую информацию о сеансе. Для меня это слишком большая головная боль, если мне действительно не нужны данные, чтобы быть там через несколько дней.

0 голосов
/ 17 июля 2009

Для выполнения множества различных вычислений я бы пошел на сессию ... Это действительно самый удобный способ пропускной способности. Если вы хотите сохранить свою корзину без использования файлов cookie, вы можете сохранить их в базе данных, когда они уходят, и перезагрузить их, когда они вернутся (очевидно, сохраняйте корзину на основе идентификатора пользователя).

0 голосов
/ 17 июля 2009

Я создаю таблицу корзины, в которой хранится идентификатор СЕССИИ и соответствующий идентификатор товара.

Идентификатор сеанса будет использоваться для привязки пользователя к просмотру. Расчет цены будет таким же простым, как получение всех строк с идентификатором сеанса пользователя и суммирование цены из таблицы элементов (например). Любые изменения в корзине подразумевают простую вставку или удаление каждого товара.

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