За последние 24 часа нас посетили 16754 программиста и 1635 роботов. Сейчас ищут 890 программистов ...

Массив около 10 КБ в $_SESSION

Тема в разделе "PHP для новичков", создана пользователем VLK, 7 мар 2014.

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Есть файл php в нем массив с часто используемыми словами, "Войти", "Выйти", "Регистрация" файл где то занимает около 10 кб, это нужно что бы в случае чего создать мультиязыковой ресурс, такой вопрос, если я этот массив запишу в $_SESSION что бы каждый раз не подгружать этот файл, это нормально? или 10 кб для $_SESSION это многовато?

    Вообще речь идет даже не о файле, а о том что бы создать отдельную таблицу в БД и туда все эти слова забить, а потом при заходе на сайт разово подгружается эта таблица, записывается в $_SESSION и все.
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    10 кб не много. Но хранится инфа в обычных сессионных файлах, те же операции чтения-записи в файловой системе.
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Родная пхпешная сериализация очень быстрая.
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    т.е. вы рекомендуете? (ну на худой конец не отговариваете)
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Если ты готов написать надёжный код, который будет проверять, создана ли сессия, и если не создана - возьмёт из БД слова и поместит в $_SESSION, то почему бы и нет?
    Я бы не стал заморачиваться. Если используешь БД, то время подключения будет намного больше того времени, которое потребуется на получение массива слов.
    Если кешируешь страницу, то вообще смысла нет.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а задача какая? нафига тебе 10кб в сессии?
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Если рассматривать один отдельный запрос, то в 10кб файле нет ничего страшного. А вот нужно ли эти данные дублировать для каждого отдельного посетителя — это большой вопрос! По моим наблюдениям за форумными хомячками, стоит начинающему разрабу познакомиться с сессиями, как он начинает заначивать туда всё, к чему прикоснется.
    Используй голову! У любого действия должны быть причины.

    Добавлено спустя 1 минуту 35 секунд:
    нам пох. честно.
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А в django сессия в базе хранится по умолчанию...
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    да и в code igniter тоже, если я ничего не путаю.
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Кажись нет. Хотя когда то старую версию кодигнетера ковырял, может что то изменилось...
     
  11. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Да я сам толком не знаю, что то примерно того, что набор слов будет хранится в БД, где я их смогу редактировать через админ панель, а не через файл как сейчас.
    Пользователь заходит, из БД я получаю набор слов записываю их в сессию и все.

    Единственное о чем я не подумал когда создавал эту тему это
    так если что я подключаю один файл, а так кучу сессионных файлов.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    зачем?
     
  13. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ответ:
    Моя задумка это эпический провал.
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    зачем в сессию класть, если они в бд?
     
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    действительно, там есть класс для сессии и есть вариант хранения в базе, но он необязателен. я часто натыкался на примеры CI + сессия в базе, поэтому закрепилась такая ассоциация :)

    Добавлено спустя 4 минуты 5 секунд:
    VLK, просто подумал "а не засунуть ли мне еще немножко данных в сессию?", так чтоли? Может хотел организовать файловый кеш?
    Тут есть что обсудить.
     
  16. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Пишется сайт, планируется что он будет мультиязычным, везде где надо в шаблоне писать любые слова, "Регистрация", "Войти" и т.д. стоит метод например:
    Код (Text):
    1. cm::gw('enter');
    и в итоге если зайдет пользователь с RU, тогда у него будет выведено (echo) "Войти", а у иноземца, будет выведено "Enter".

    сейчас набор этих слов хранится в файле и что бы что то дописать надо открывать этот файл и через редактор PHP дописывать, мне хотелось не через редактор, а через сам сайт, через админ панель с удобным интерфейсом, а для этого засунуть все эти слова в БД, а потом из БД в сессию ну и..
    Вообщем как я понимаю глупость.
     
  17. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Редактор это не глупость, а очень даже здравая мысль. Вот сессия здесь реально не при чем.
    Надо абстрагироваться от способа хранения файл/база, придумать интерфейс и реализовать разные загрузчики по мере надобности.
    Редактор не должен знать о том, как именно хранится перевод.

    Добавлено спустя 16 минут 5 секунд:
    Общая схема
    Код (PHP):
    1. interface TranslationStorageInterface
    2. {
    3.   public function load($language, $domain);
    4.   public function save($language, $domain, $data);
    5. }
    6.  
    7. class TranslationEditorController
    8. {
    9.   private $storage;
    10.  
    11.   public function __construct(TranslationStorageInterface $storage)
    12.   {
    13.     $this->storage = $storage;
    14. //...
    15.   }
    16.  
    17.   public function editAction()
    18.   {
    19.     $data = $this->storage->load($_GET['lang'], $_GET['domain']);
    20. // ...
    21.     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    22. // ... помещаем что там наредактировал юзер в $data ...
    23.       $this->storage->save($_GET['lang'], $_GET['domain'], $data);
    24.     }
    25.     $view->render('Trans/edit', $data);
    26.   }
    27. // ...
    28. }
    29.     
    30. ...
    31. }