Перейти к содержанию

Рекомендуемые сообщения

Стал разбирать общую структуру OpenCart и стало интересно, неужели при каждом запросе к любому из контроллеров вначале создается объект класса Customer который заполняет все переменные о покупателе из БД. Правильно? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Объект создается, если есть $this->session->data['customer_id'], в противном же случае, создается $this->session->data['guest'], которая храниться соотв. в сесии, и пока (при реге или авторизации) не unset-нется, до тех пор будет фигурировать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Объект создается, если есть $this->session->data['customer_id'], в противном же случае, создается $this->session->data['guest'], которая храниться соотв. в сесии, и пока (при реге или авторизации) не unset-нется, до тех пор будет фигурировать...

 

Тоже всегда интересовал этот вопрос) Но вроде если ты уже авторизацию прошел то при каждом запросе создается объект и подгружает из бд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, в сесии хранится значение $this->session->data['customer_id'] и уже отталкиваясь от этого значения, подгружаются (в нужных местах) данные по этому идентификатору.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, в сесии хранится значение $this->session->data['customer_id'] и уже отталкиваясь от этого значения, подгружаются (в нужных местах) данные по этому идентификатору.

 

Так а не большая ли нагрузка когда при каждом запросе приходиться подгружать весь Customer ? Не лучше ли было хранить что то в сессиях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так а не большая ли нагрузка когда при каждом запросе приходиться подгружать весь Customer ? Не лучше ли было хранить что то в сессиях.

у где вы замечаете большую нагрузку ? В корзине ? При оформлении заказа ? В "личном кабинете" ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Вызов нужных полей из базы фактически происходит в 3-х схемах:

Аккаунт (и все зависимые)

Оформление заказа

Контакты

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

 

P.S. В шапку сайта выводит постоянное обращение для вывода имени пользователя, но это незначительный запрос при рассмотрении более глобальном.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От 100napb
      350 RUB
      View File


      Прошлые заказы и товары клиента (Расширенный вид заказа в админке)
       
      Модуль расширяет стандартную форму просмотра заказа в админке OpenCart, органично добавляя сводную информацию о клиенте, его заказах, а так же ранее заказанных клиентом товарах. Этим реально удобно пользоваться.
       
      Какую задачу решает модуль
      Сводная информация позволит менеджеру интернет-магазина оперативно оценить важность клиента и его значимость. Так же, благодаря сводным данным, можно сделать выводы об интересах и предпочтениях клиента для того, что бы дать рекомендации или обратить внимание на товары, которые хорошо сочетаются или дополняют те, что клиент заказывал ранее. Благодаря модулю Вы не пропустите ни одного повторного заказа, а Ваши клиенты будут превращаться в постоянных покупателей благодаря тому, что их узнают и помнят о каждом сделанном ранее заказе.
       
      Уже более года функционал модуля используется на рабочих проектах, где отлично себя зарекомендовал. А именно:
      клиенты очень ценят индивидуальный подход при выявлении повторного заказа (а все видно сразу в заказе) можно смело предлагать различные бонусы и "плюшки", что бы усилить лояльность + видоизменять стандартные письма \ по-другому строить диалог, как уже со "старым знакомым" имея информацию о повторно заказываемых товарах, очень легко предлагать дополнительные позиции к заказу, что увеличивает сумму заказа  
      Ссылка на демо (настройки модуля). Login\pass = demo\demo
      Ссылка на демо (вид заказа в админке). Login\pass = demo\demo
      Можете самостоятельно оформить на демо-сайте сколько угодно заказов с указанием одного и того же email (по нему определяется уникальность клиента) и после посмотреть свою историю в демо-админке
       
      Пример 1:
       
      Пример 2:
       
      Какая конкретно доступна информация о заказах\клиенте
      Модуль добавляет информацию следующего характера:
      Отображает список всех заказов, полученных от клиента, включая забытые\брошенные корзинки Считает сумму всех завершенных заказов клиента Показывает относительную позицию (ранг) клиента, исходя из суммы его заказов. Позволяет узнать "ценность" клиента, где 100% - это самый ценный клиент, который принес Вам больше всего денег. Выводит список всех ранее заказанных клиентом товаров (вычисляется из завершенных заказов и заказов в обработке) Позволяет мгновенно увидеть повторно заказываемые товары. Если клиент повторно заказывает некий конкретный товар, то в списке товаров заказа, рядом с колонкой "количество" для этого товара добавляется число в скобках. Это число отражает количество товара, которое ранее было заказано клиентом.  
      Что можно настроить?
      Установка
      Лицензия
      Системные требования
      Планы на будущее
       
      Модуль окупается буквально с первыми же клиентами, которых Вы превратите в постоянных
      Submitter 100napb Submitted 09/12/2018 Category Прочее Системные требования PHP 5.4+ Метод активации Без активации Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Не проверялось  
    • От 100napb
      Модуль расширяет стандартную форму просмотра заказа в админке OpenCart, органично добавляя сводную информацию о клиенте, его заказах, а так же ранее заказанных клиентом товарах. Этим реально удобно пользоваться.
       
      Какую задачу решает модуль
      Сводная информация позволит менеджеру интернет-магазина оперативно оценить важность клиента и его значимость. Так же, благодаря сводным данным, можно сделать выводы об интересах и предпочтениях клиента для того, что бы дать рекомендации или обратить внимание на товары, которые хорошо сочетаются или дополняют те, что клиент заказывал ранее. Благодаря модулю Вы не пропустите ни одного повторного заказа, а Ваши клиенты будут превращаться в постоянных покупателей благодаря тому, что их узнают и помнят о каждом сделанном ранее заказе.
       
      Уже более года функционал модуля используется на рабочих проектах, где отлично себя зарекомендовал. А именно:
      клиенты очень ценят индивидуальный подход при выявлении повторного заказа (а все видно сразу в заказе) можно смело предлагать различные бонусы и "плюшки", что бы усилить лояльность + видоизменять стандартные письма \ по-другому строить диалог, как уже со "старым знакомым" имея информацию о повторно заказываемых товарах, очень легко предлагать дополнительные позиции к заказу, что увеличивает сумму заказа  
      Ссылка на демо (настройки модуля). Login\pass = demo\demo
      Ссылка на демо (вид заказа в админке). Login\pass = demo\demo
      Можете самостоятельно оформить на демо-сайте сколько угодно заказов с указанием одного и того же email (по нему определяется уникальность клиента) и после посмотреть свою историю в демо-админке
       
      Пример 1:
       
      Пример 2:
       
      Какая конкретно доступна информация о заказах\клиенте
      Модуль добавляет информацию следующего характера:
      Отображает список всех заказов, полученных от клиента, включая забытые\брошенные корзинки Считает сумму всех завершенных заказов клиента Показывает относительную позицию (ранг) клиента, исходя из суммы его заказов. Позволяет узнать "ценность" клиента, где 100% - это самый ценный клиент, который принес Вам больше всего денег. Выводит список всех ранее заказанных клиентом товаров (вычисляется из завершенных заказов и заказов в обработке) Позволяет мгновенно увидеть повторно заказываемые товары. Если клиент повторно заказывает некий конкретный товар, то в списке товаров заказа, рядом с колонкой "количество" для этого товара добавляется число в скобках. Это число отражает количество товара, которое ранее было заказано клиентом.  
      Что можно настроить?
      Установка
      Лицензия
      Системные требования
      Планы на будущее
       
      Модуль окупается буквально с первыми же клиентами, которых Вы превратите в постоянных
    • От nikneman
      Здравствуйте. 
      Подскажите, пожалуйста, можно ли в одном запросе получить данные(email, firstname, lastname) пользователей которые подписались при регистрации, а также Business Name если оно есть.
      Получить пользователей которые подписались я могу так: 
      SELECT email, firstname, lastname FROM `oc_customer` WHERE newsletter = 1; Информация о business name как я понимаю хранится в таблице 'oc_customer_company' в поле 'company name'. 
      Как пример: 
      Customer1 - подписался, но его нет в таблице 'oc_customer_company'
      Customer2 - не подписывался, но есть в таблице 'oc_customer_company'
      Customer3 - подписался и есть в таблице 'oc_customer_company'
      Сustomer4 - не подписывался и нет в таблице 'oc_customer_company'
      Т.е. в запросе должны отобразится email, firstname, lastname, company_name для Customer1 и Customer3. Для Customer1 значение 'company_name' будет пустым.
      Версия OpenCart 2.3.0.2
      Заранее спасибо.
    • От BeTep2
      Добрый день, уже неделю бьюсь с проблемой оповещений.
      Дело в том что по факту ничего не менял (убрал из шаблона письма ссылки и картинку магазина), и изначально все письма отправленные (о заказе, регистрации) попадают в спам Гугла и Укр.нета (больше не проверял).
      Если поставить ящик магазину гугловский, то в спам гугла уже не попадает, но попадает в спам остальных :)
       
      Почта хостера, ДКИМ, СПФ настроены верно, уже неделю пытаемся с ним решить проблему, он настаивает на том что почта отсекается проверкой состава самого письма.
       
      Изначально я пресекался с ним потому что не мог поверить, что при подаче "с коробки" Осстора 1.5.4.1 может быть такой косяк, и при этом погуглив такой массовой проблемы я не встретил. Но в итоге я все таки ему верю, и думаю что проблема действительно в теле письма.
       
      Осстор 1.5.4.1
       
      Техн. состав шапки письма (звездочками по закрывал мыла):

       
      Есть ли известные косяки в формировке шаблона письма в Оссторе 1.5.4.1? Эти строки "NextPart_09d7" и т.д. немного настораживают..
       
      Копать system/library/mail.php или сам шаблон ХТМЛьный?
      А есть еще catalog/model/checkout/order.php... в общем я немного потерялся, и совсем не знаю что и куда рыть.
    • От BeTep2
      Добрый день,
       
      после регистрации нового пользователя админу приходит сообщение (копия письма, которое получает пользователь).
      Однако если пользователь понимает свой логин (это само мыло), админу это не понятно, т.к. он получает письмо от самого сайта.
       
      В файле catalog/model/account/customer.php есть такие строчки:
      // Send to main admin email if new account email is enabled if ($this->config->get('config_account_mail')) { $mail->setTo($this->config->get('config_email')); $mail->send(); // Send to additional alert emails if new account email is enabled $emails = explode(',', $this->config->get('config_alert_emails')); foreach ($emails as $email) { if (strlen($email) > 0 && preg_match('/^[^\@]+@.*\.[a-z]{2,6}$/i', $email)) { $mail->setTo($email); $mail->send(); } } } Есть ли возможность указать либо в письме логин (мыло) пользователя, либо как-то заставить его отправляться в ответке админу?


      Также маленький вопрос по номеру заказа, в "коробке" опенкарт начинает заказы с 1, и получается не очень красиво, можно ли изменить тип цифр на "000001" или как-то в этом роде?
       
      Спасибо.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.