amfsota Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Я опять тут за помощью. Насколько я знаю у opencart pro есть кэширование запросов в базу. Похоже я напоролся с этим кэшированием на геморрой. У меня то читаются и пишутся поля в базу, то перестают это делать, непонятно почему. $calcjson=json_encode($data['calcparams']); $this->db->query("UPDATE " . DB_PREFIX . "product SET calculator='" . $this->db->escape($data['selected-calculator']) . "' WHERE product_id = '" . (int)$product_id . "'");// это поле пишется и читается номрально $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='" . $this->db->escape($calcjson) . " WHERE product_id = '" . (int)$product_id . "'");// это поле сейчас не пишется и не читается, вчера и сегодня утром читалось без проблем Кто-нибудь сталкивался с такой проблемой? Надіслати Поділитися на інших сайтах More sharing options...
gavi Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Потеряли один символ $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='" . $this->db->escape($calcjson) . "' WHERE product_id = '" . (int)$product_id . "'"); Надіслати Поділитися на інших сайтах More sharing options...
amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 17 минут назад, amfsota сказал: Один пень не пишет. Я в отчаянии. что делать - не знаю. Обновляются поля из фронта ? Если включен Turbo - то понятное дело обновляться они не будут, так как код их выполняться не будет Отключать Turbo Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 Похоже мы с Вами в другом форуме общаемся)) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 21 минуту назад, amfsota сказал: Похоже мы с Вами в другом форуме общаемся)) У вас сборка opencart.pro стоит ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 11 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Да отдать кеш При полностраничном кешировании кешировщиком код контроллеров фронта исполняться не будет Соответственно не будет исполняться и код ТС (если он во фронте) Надо кешер умеющий по контроллерно кешировать Или выключать полностраничный кешировщик Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 32 минуты назад, markimax сказал: У вас сборка opencart.pro стоит ? Да Pro Версия 2.1.0.1.10 кеш менеджер включен в процессе тестов постоянно обновлял и системный кеш и картинки - без толку. Сейчас все запросы работают и из админки и из каталога. А когда глюки начинаются, только phpmyadmin может вносить изменения в базу. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 47 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Это каждый запрос к базе так обслуживать? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Это так работает полностраничное кеширование, о чем вам и говорил markimax Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Формулировка некорректна, если речь идет о кэшировании запросов к базе данных. Нужно проверку вести в файлах model. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 4 минуты назад, EVMedvedev сказал: Формулировка некорректна, Поясните некорректность полностраничного кеша? Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 (змінено) 1 час назад, EVMedvedev сказал: если речь идет о кэшировании запросов к базе данных. именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Змінено 24 липня 2017 користувачем amfsota Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 2 часа назад, chukcha сказал: Поясните некорректность полностраничного кеша? Вместо кода контроллера нужен код модели, то есть то место, где формируется запрос к базе данных. Ключом данных в кэше является хэш SQL-запроса. Полностраничный кэш - это когда в кэше хранится весь HTML-код страницы. Тогда соответственно перехват страницы нужно делать на уровне роутинга. Например в Action, но получается опять же не в контроллере. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Покажите некорректность на каком этапе проверяется наличие кеша? 4 минуты назад, EVMedvedev сказал: Вместо кода контроллера нужен код модели Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, amfsota сказал: именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Если поля выборочно пишутся или теряются, то соответственно либо проблемы сериализации и десериализации (данные из БД нужно преобразовывать в строку для записи в кэш и обратно в массив) либо потери данных в самом кэше. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 (змінено) 12 часов назад, chukcha сказал: Покажите некорректность на каком этапе проверяется наличие кеша? Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Змінено 25 липня 2017 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 16 часов назад, amfsota сказал: Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання кэширование базы opencart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 Похоже мы с Вами в другом форуме общаемся)) Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 21 минуту назад, amfsota сказал: Похоже мы с Вами в другом форуме общаемся)) У вас сборка opencart.pro стоит ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 11 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Да отдать кеш При полностраничном кешировании кешировщиком код контроллеров фронта исполняться не будет Соответственно не будет исполняться и код ТС (если он во фронте) Надо кешер умеющий по контроллерно кешировать Или выключать полностраничный кешировщик Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 32 минуты назад, markimax сказал: У вас сборка opencart.pro стоит ? Да Pro Версия 2.1.0.1.10 кеш менеджер включен в процессе тестов постоянно обновлял и системный кеш и картинки - без толку. Сейчас все запросы работают и из админки и из каталога. А когда глюки начинаются, только phpmyadmin может вносить изменения в базу. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 47 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Это каждый запрос к базе так обслуживать? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Это так работает полностраничное кеширование, о чем вам и говорил markimax Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Формулировка некорректна, если речь идет о кэшировании запросов к базе данных. Нужно проверку вести в файлах model. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 4 минуты назад, EVMedvedev сказал: Формулировка некорректна, Поясните некорректность полностраничного кеша? Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 (змінено) 1 час назад, EVMedvedev сказал: если речь идет о кэшировании запросов к базе данных. именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Змінено 24 липня 2017 користувачем amfsota Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 2 часа назад, chukcha сказал: Поясните некорректность полностраничного кеша? Вместо кода контроллера нужен код модели, то есть то место, где формируется запрос к базе данных. Ключом данных в кэше является хэш SQL-запроса. Полностраничный кэш - это когда в кэше хранится весь HTML-код страницы. Тогда соответственно перехват страницы нужно делать на уровне роутинга. Например в Action, но получается опять же не в контроллере. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Покажите некорректность на каком этапе проверяется наличие кеша? 4 минуты назад, EVMedvedev сказал: Вместо кода контроллера нужен код модели Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, amfsota сказал: именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Если поля выборочно пишутся или теряются, то соответственно либо проблемы сериализации и десериализации (данные из БД нужно преобразовывать в строку для записи в кэш и обратно в массив) либо потери данных в самом кэше. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 (змінено) 12 часов назад, chukcha сказал: Покажите некорректность на каком этапе проверяется наличие кеша? Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Змінено 25 липня 2017 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 16 часов назад, amfsota сказал: Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання кэширование базы opencart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 21 минуту назад, amfsota сказал: Похоже мы с Вами в другом форуме общаемся)) У вас сборка opencart.pro стоит ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 11 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Да отдать кеш При полностраничном кешировании кешировщиком код контроллеров фронта исполняться не будет Соответственно не будет исполняться и код ТС (если он во фронте) Надо кешер умеющий по контроллерно кешировать Или выключать полностраничный кешировщик Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 32 минуты назад, markimax сказал: У вас сборка opencart.pro стоит ? Да Pro Версия 2.1.0.1.10 кеш менеджер включен в процессе тестов постоянно обновлял и системный кеш и картинки - без толку. Сейчас все запросы работают и из админки и из каталога. А когда глюки начинаются, только phpmyadmin может вносить изменения в базу. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 47 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Это каждый запрос к базе так обслуживать? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Это так работает полностраничное кеширование, о чем вам и говорил markimax Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Формулировка некорректна, если речь идет о кэшировании запросов к базе данных. Нужно проверку вести в файлах model. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 4 минуты назад, EVMedvedev сказал: Формулировка некорректна, Поясните некорректность полностраничного кеша? Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 (змінено) 1 час назад, EVMedvedev сказал: если речь идет о кэшировании запросов к базе данных. именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Змінено 24 липня 2017 користувачем amfsota Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 2 часа назад, chukcha сказал: Поясните некорректность полностраничного кеша? Вместо кода контроллера нужен код модели, то есть то место, где формируется запрос к базе данных. Ключом данных в кэше является хэш SQL-запроса. Полностраничный кэш - это когда в кэше хранится весь HTML-код страницы. Тогда соответственно перехват страницы нужно делать на уровне роутинга. Например в Action, но получается опять же не в контроллере. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Покажите некорректность на каком этапе проверяется наличие кеша? 4 минуты назад, EVMedvedev сказал: Вместо кода контроллера нужен код модели Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, amfsota сказал: именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Если поля выборочно пишутся или теряются, то соответственно либо проблемы сериализации и десериализации (данные из БД нужно преобразовывать в строку для записи в кэш и обратно в массив) либо потери данных в самом кэше. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 (змінено) 12 часов назад, chukcha сказал: Покажите некорректность на каком этапе проверяется наличие кеша? Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Змінено 25 липня 2017 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 16 часов назад, amfsota сказал: Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання кэширование базы opencart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 11 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Да отдать кеш При полностраничном кешировании кешировщиком код контроллеров фронта исполняться не будет Соответственно не будет исполняться и код ТС (если он во фронте) Надо кешер умеющий по контроллерно кешировать Или выключать полностраничный кешировщик Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 32 минуты назад, markimax сказал: У вас сборка opencart.pro стоит ? Да Pro Версия 2.1.0.1.10 кеш менеджер включен в процессе тестов постоянно обновлял и системный кеш и картинки - без толку. Сейчас все запросы работают и из админки и из каталога. А когда глюки начинаются, только phpmyadmin может вносить изменения в базу. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 47 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Это каждый запрос к базе так обслуживать? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Это так работает полностраничное кеширование, о чем вам и говорил markimax Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Формулировка некорректна, если речь идет о кэшировании запросов к базе данных. Нужно проверку вести в файлах model. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 4 минуты назад, EVMedvedev сказал: Формулировка некорректна, Поясните некорректность полностраничного кеша? Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 (змінено) 1 час назад, EVMedvedev сказал: если речь идет о кэшировании запросов к базе данных. именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Змінено 24 липня 2017 користувачем amfsota Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 2 часа назад, chukcha сказал: Поясните некорректность полностраничного кеша? Вместо кода контроллера нужен код модели, то есть то место, где формируется запрос к базе данных. Ключом данных в кэше является хэш SQL-запроса. Полностраничный кэш - это когда в кэше хранится весь HTML-код страницы. Тогда соответственно перехват страницы нужно делать на уровне роутинга. Например в Action, но получается опять же не в контроллере. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Покажите некорректность на каком этапе проверяется наличие кеша? 4 минуты назад, EVMedvedev сказал: Вместо кода контроллера нужен код модели Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, amfsota сказал: именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Если поля выборочно пишутся или теряются, то соответственно либо проблемы сериализации и десериализации (данные из БД нужно преобразовывать в строку для записи в кэш и обратно в массив) либо потери данных в самом кэше. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 (змінено) 12 часов назад, chukcha сказал: Покажите некорректность на каком этапе проверяется наличие кеша? Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Змінено 25 липня 2017 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 16 часов назад, amfsota сказал: Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання кэширование базы opencart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 32 минуты назад, markimax сказал: У вас сборка opencart.pro стоит ? Да Pro Версия 2.1.0.1.10 кеш менеджер включен в процессе тестов постоянно обновлял и системный кеш и картинки - без толку. Сейчас все запросы работают и из админки и из каталога. А когда глюки начинаются, только phpmyadmin может вносить изменения в базу. Надіслати Поділитися на інших сайтах More sharing options...
amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 47 минут назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Это каждый запрос к базе так обслуживать? Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Это так работает полностраничное кеширование, о чем вам и говорил markimax Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Формулировка некорректна, если речь идет о кэшировании запросов к базе данных. Нужно проверку вести в файлах model. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 4 минуты назад, EVMedvedev сказал: Формулировка некорректна, Поясните некорректность полностраничного кеша? Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 (змінено) 1 час назад, EVMedvedev сказал: если речь идет о кэшировании запросов к базе данных. именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Змінено 24 липня 2017 користувачем amfsota Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 2 часа назад, chukcha сказал: Поясните некорректность полностраничного кеша? Вместо кода контроллера нужен код модели, то есть то место, где формируется запрос к базе данных. Ключом данных в кэше является хэш SQL-запроса. Полностраничный кэш - это когда в кэше хранится весь HTML-код страницы. Тогда соответственно перехват страницы нужно делать на уровне роутинга. Например в Action, но получается опять же не в контроллере. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Покажите некорректность на каком этапе проверяется наличие кеша? 4 минуты назад, EVMedvedev сказал: Вместо кода контроллера нужен код модели Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, amfsota сказал: именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Если поля выборочно пишутся или теряются, то соответственно либо проблемы сериализации и десериализации (данные из БД нужно преобразовывать в строку для записи в кэш и обратно в массив) либо потери данных в самом кэше. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 (змінено) 12 часов назад, chukcha сказал: Покажите некорректность на каком этапе проверяется наличие кеша? Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Змінено 25 липня 2017 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 16 часов назад, amfsota сказал: Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання кэширование базы opencart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, chukcha сказал: Это точно что в другом, но не форуме, а формате Есть кеш? НЕТ код контроллера update готовим кеш отдать кеш Да отдать кеш Формулировка некорректна, если речь идет о кэшировании запросов к базе данных. Нужно проверку вести в файлах model. Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 4 минуты назад, EVMedvedev сказал: Формулировка некорректна, Поясните некорректность полностраничного кеша? Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 (змінено) 1 час назад, EVMedvedev сказал: если речь идет о кэшировании запросов к базе данных. именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Змінено 24 липня 2017 користувачем amfsota Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 2 часа назад, chukcha сказал: Поясните некорректность полностраничного кеша? Вместо кода контроллера нужен код модели, то есть то место, где формируется запрос к базе данных. Ключом данных в кэше является хэш SQL-запроса. Полностраничный кэш - это когда в кэше хранится весь HTML-код страницы. Тогда соответственно перехват страницы нужно делать на уровне роутинга. Например в Action, но получается опять же не в контроллере. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Покажите некорректность на каком этапе проверяется наличие кеша? 4 минуты назад, EVMedvedev сказал: Вместо кода контроллера нужен код модели Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, amfsota сказал: именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Если поля выборочно пишутся или теряются, то соответственно либо проблемы сериализации и десериализации (данные из БД нужно преобразовывать в строку для записи в кэш и обратно в массив) либо потери данных в самом кэше. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 (змінено) 12 часов назад, chukcha сказал: Покажите некорректность на каком этапе проверяется наличие кеша? Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Змінено 25 липня 2017 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 16 часов назад, amfsota сказал: Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання кэширование базы opencart Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
amfsota Опубліковано: 24 липня 2017 Автор Share Опубліковано: 24 липня 2017 (змінено) 1 час назад, EVMedvedev сказал: если речь идет о кэшировании запросов к базе данных. именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Змінено 24 липня 2017 користувачем amfsota Надіслати Поділитися на інших сайтах More sharing options...
EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 2 часа назад, chukcha сказал: Поясните некорректность полностраничного кеша? Вместо кода контроллера нужен код модели, то есть то место, где формируется запрос к базе данных. Ключом данных в кэше является хэш SQL-запроса. Полностраничный кэш - это когда в кэше хранится весь HTML-код страницы. Тогда соответственно перехват страницы нужно делать на уровне роутинга. Например в Action, но получается опять же не в контроллере. Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 Покажите некорректность на каком этапе проверяется наличие кеша? 4 минуты назад, EVMedvedev сказал: Вместо кода контроллера нужен код модели Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, amfsota сказал: именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Если поля выборочно пишутся или теряются, то соответственно либо проблемы сериализации и десериализации (данные из БД нужно преобразовывать в строку для записи в кэш и обратно в массив) либо потери данных в самом кэше. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 (змінено) 12 часов назад, chukcha сказал: Покажите некорректность на каком этапе проверяется наличие кеша? Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Змінено 25 липня 2017 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 16 часов назад, amfsota сказал: Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання кэширование базы opencart
EVMedvedev Опубліковано: 24 липня 2017 Share Опубліковано: 24 липня 2017 1 час назад, amfsota сказал: именно к базе со страницами всё в порядке проблема с запросами, то работают, то - нет причём выборочно, одни поля пишет и читает, другие - нет Если поля выборочно пишутся или теряются, то соответственно либо проблемы сериализации и десериализации (данные из БД нужно преобразовывать в строку для записи в кэш и обратно в массив) либо потери данных в самом кэше. Надіслати Поділитися на інших сайтах More sharing options...
EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 (змінено) 12 часов назад, chukcha сказал: Покажите некорректность на каком этапе проверяется наличие кеша? Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Змінено 25 липня 2017 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options...
snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 16 часов назад, amfsota сказал: Да нет, это я правил строку, и пропустил кавычку, думал кодировка в json барахлит, и тупо в запросе пробовал так: $this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='ggggggg' WHERE product_id = '" . (int)$product_id . "'"); Один пень не пишет. Я в отчаянии. что делать - не знаю. Кроме этого даже чтение из базы по нулям из этого поля как будто его нет, а он ЕСТЬ. А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
EVMedvedev Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 1 час назад, EVMedvedev сказал: Так написано же. Для полностраничного кэширования в Action (если точнее, то в Action::execute), чтобы даже URL не разбирать, если для него есть кэш. Для модели - в момент после сбора полного SQL-запроса и перед его исполнением. В первом случае делаем ключ для кэша из урла, во втором - из SQL-запроса. Обычная практика во всех движках. Кстати отсутствие в Opencart ORM движка для работы с базой данных, как например в Symfony, осложняет кэширование данных. В Symfony, а значит на всех системах на его основе, кэширование данных встроено в Doctrine централизовано. Обшибся, каюсь. Не Action::execute, а скорее Front::dispatch. В других движках алгоритмы другие. Сначала работает routing, то есть разбор урлов, а уже потом запускается контроллер. Там уже поздно кэшировать. В этом смысле вы видимо имели ввиду "контроллер" это переменная $controller в index.php в которой и сидит объект класса Front. Тогда все верно. Надіслати Поділитися на інших сайтах More sharing options...
amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 3 часа назад, snastik сказал: А вы уверены, что product_id у вас приходит нормальный ? сделайте после этой конструкции $this->log->write("update .... ) и посмотрите что у вас пишет на самом деле. Я подозреваю проблема в том, что вы просто кривой айдишник передаете и он или нулевой или его нету. А про кеширование запросов в базу - чушь! Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Надіслати Поділитися на інших сайтах More sharing options...
snastik Опубліковано: 25 липня 2017 Share Опубліковано: 25 липня 2017 26 минут назад, amfsota сказал: Так вот и я думаю, что чушь. Дело в том, что у меня 2 запроса подряд (раньше это был один запрос, я его специально разделил, чтобы понять где ошибка) с одним и тем же product_id: из одной переменной. Первый запрос пишет в базу данные, второй-нет, как будто стоит запрет на запись или чтение из поля 'parametres'. Может ли mysql ограничивать доступ к определённым полям таблицы? Наверное версию с кешированием запросов от Opencart надо отбросить... Доступ ограничивать не может - сделайте так как я вам выше написал - залоггируйте запросы и посмотрите что происходит. Надіслати Поділитися на інших сайтах More sharing options... amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
amfsota Опубліковано: 25 липня 2017 Автор Share Опубліковано: 25 липня 2017 Спасибо, если база не ограничивает доступ значит что-то не так в коде. Буду копать. Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts