2016-09-21 4 views
3

Я создаю сайт, на котором пользователи смогут сравнивать спецификации между продуктами. Пользователи могут просматривать спецификации для одного продукта, где мне нужны только спецификации для этого конкретного продукта, но они также смогут сравнить выбранный продукт с любым другим продуктом, доступным на сайте. Я думаю, что у меня получится что-то вроде 75-100 продуктов.PHP - производительность переменной сеанса (session var vs read file)

Все спецификации доступны в глобальном файле csv. Каждый продукт имеет потенциально 37 функций и от 75 до 100. Размер этого файла составляет около 50 КБ. У меня также есть отдельные файлы для каждого продукта, содержащего одни и те же данные, но только для одного продукта.

мне было интересно, что было бы лучшим способом, чтобы обеспечить хорошую производительность:

  1. Загрузить весь файл в $ _SESSION, чтобы сделать это все время, доступным для всех страниц. Это означает, что все данные загружаются один раз и доступны все время без какого-либо дополнительного запроса, но может ли это повлиять на производительность?

  2. Загрузка файлов по отдельности, когда они необходимы, но это означает, что если кто-то начинает сравнивать продукты (и это цель), PHP будет читать файлы все время,

  3. данные хранятся в базе данных и доступ к ним каждый раз это необходимо

Какой был бы лучший вариант? Если вы думаете о каком-либо другом решении, я тоже заинтересован.

Благодаря

ответ

1

Поскольку вы собираетесь хранить данные, вы можете захотеть поместить его в базу данных;)

Поскольку базы данных двигателей действительно хорошо кэширования, вы, вероятно, не будет в скором времени придется беспокоиться о производительности, плюс вы создали себе некоторую головную боль-профилактику, если «файл» внезапно станет намного больше.

И если в базе данных недостаточно производительности, вы всегда можете прибегнуть к MEMORY-table в MySQL или memcached, например.

+0

Спасибо! Я также думал об использовании опции базы данных, но то, что я хотел бы понять, заключается в том, что лучше иметь что-то вроде 10 запросов в базе данных или после загрузки всего файла? – Laurent

2

Загрузка csv в $ _SESSION все равно должна произойти для каждого запроса, что не очень эффективно.

Mysql отлично подходит для некоторых решений для чтения/чтения, но мне кажется, что ваша ситуация скорее связана с ситуацией с редкостью/чтением.

Использование кэш-памяти, как один из вариантов, чтобы сохранить содержимое CSV, вероятно, гораздо больше смысла:

+0

Привет, Стюарт, спасибо! Я действительно в ситуации, когда я писал 3-4 раза в месяц и читал много раз (и много раз в течение той же сессии). Мне нужно будет проконсультироваться с хостинговой компанией, если они предоставят предлагаемые вами решения. Спасибо за ваше предложение! – Laurent

Смежные вопросы