uorypm

Кэш. Class Cache. Проблема с генерацией непонятной строки

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

uorypm    0

Здравствуйте, форумчане!

 

Есть файл контроллера, в котором запрашивается кэш:

$product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);

Есть системный класс Cache, в котором есть метод get.

 

 

Проблема в том, что из файла контроллера запрашивается строка вида "product.total.1.0.1.$cache" (где $cache - это некая сгенерированная строка). А в метод get класса Cache приходит непонятно почему такая строка: "product.total.1.0.1.cfcd208495d565ef66e7dff9f98764da.$cache".

 

Ссылка $this в файле контроллера ссылается на объект $registry класса Registry, в нем зарегистрирован экземпляр класса Cache. Т.е. вроде бы все нормально.

 

При этом метод set класса Cache записывает кэш как и положено - в виде файла с именем "product.total.1.0.1.$cache". Т.е. сейчас кэш для файлов "product.total.1.0.1.*" вообще не используется и CMS постоянно обращается к БД.

 

Временно метод get класса Cache изменил так:

	public function get($key) {
		if(preg_match('/^product\.total\.1\.0\.1\.cfcd208495d565ef66e7dff9f98764da.*$/', $key))
		{
			$key = str_replace('cfcd208495d565ef66e7dff9f98764da.', '', $key);
		}

	// ...

	}

Кто-нибудь с таким сталкивался и откуда и почему вставляетяс строка "cfcd208495d565ef66e7dff9f98764da" в имя файла кэша?

 

Спасибо.

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


Ссылка на сообщение
Поделиться на другие сайты
halfhope    164
$cache = '1.0.1.cfcd208495d565ef66e7dff9f98764da' ;

Все правильно работает.

1. Напишите полный код класса Cache под спойлером.

2. И код контроллера, который запрашивает данные из кэша.

3. Как определили, что кэш не используется?

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


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

1. Код класса Cache

<?php
class Cache { 
	private $expire = 3600; 

	public function get($key) {
		if(preg_match('/^product\.total\.1\.0\.1\.cfcd208495d565ef66e7dff9f98764da.*$/', $key))
		{
			$key = str_replace('cfcd208495d565ef66e7dff9f98764da.', '', $key);
			//echo $key , "<br/>\r\n";
		}
		$files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');
		
		if ($files) {
			$cache = file_get_contents($files[0]);
			
			$data = unserialize($cache);
			
			foreach ($files as $file) {
				$time = substr(strrchr($file, '.'), 1);

      			if ($time < time()) {
					if (file_exists($file)) {
						unlink($file);
					}
      			}
    		}
			
			return $data;			
		}
	}

  	public function set($key, $value) {
    	$this->delete($key);
		
		$file = DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.' . (time() + $this->expire);
    	
		$handle = fopen($file, 'w');

    	fwrite($handle, serialize($value));
		
    	fclose($handle);
  	}
	
  	public function delete($key) {
		$files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');
		
		if ($files) {
    		foreach ($files as $file) {
      			if (file_exists($file)) {
					unlink($file);
				}
    		}
		}
  	}
}
?>

 

2. Модель, не контроллер. Вот код метода:

<?php
	public function getTotalProducts($data = array()) {
		if ($this->customer->isLogged()) {
			$customer_group_id = $this->customer->getCustomerGroupId();
		} else {
			$customer_group_id = $this->config->get('config_customer_group_id');
		}	
				
		$cache = md5(http_build_query($data));
		
		$product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
		
		if (!$product_data and $product_data === NULL) {
			
			$sql = "SELECT COUNT(DISTINCT p.product_id) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id)";
	
			if (!empty($data['filter_category_id'])) {
				$sql .= " LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id)";			
			}
						
			$sql .= " WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
			
			if (!empty($data['filter_name']) || !empty($data['filter_tag'])) {
				$sql .= " AND (";
				
				if (!empty($data['filter_name'])) {					
					if (!empty($data['filter_description'])) {
						$sql .= "LCASE(pd.name) LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%' OR MATCH(pd.description) AGAINST('" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "')";
					} else {
						$sql .= "LCASE(pd.name) LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%'";
					}
				}
				
				if (!empty($data['filter_name']) && !empty($data['filter_tag'])) {
					$sql .= " OR ";
				}
				
				if (!empty($data['filter_tag'])) {
					$sql .= "MATCH(pd.tag) AGAINST('" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "')";
				}
			
				$sql .= ")";
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}	
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}		

				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}

				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}		
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}				
			}
						
			if (!empty($data['filter_category_id'])) {
				if (!empty($data['filter_sub_category'])) {
					$implode_data = array();
					
					$implode_data[] = (int)$data['filter_category_id'];
					
					$this->load->model('catalog/category');
					
					$categories = $this->model_catalog_category->getCategoriesByParentId($data['filter_category_id']);
										
					foreach ($categories as $category_id) {
						$implode_data[] = (int)$category_id;
					}
								
					$sql .= " AND p2c.category_id IN (" . implode(', ', $implode_data) . ")";			
				} else {
					$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
				}
			}		
			
			if (!empty($data['filter_manufacturer_id'])) {
				$sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'";
			}
			
			$query = $this->db->query($sql);
			
			$product_data = $query->row['total']; 
			
			$this->cache->set('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache, $product_data);
		}
		
		return $product_data;
	}

 

3. Изначальная причина была в том, что сайт работал медленно. Системный администратор, потом и я, проверил нагрузку на сервер - нагрузка на сервер действительно была очень большой (не такой, какой должна была быть при работе с кэшем). Была поставлена мне задача. Посмотрел папку с кэшем - кэш создается под одним именем, а запрашивается под другим (в следствие чего создается новый запрос к БД и сайт работает медленно, а сервер под нагрузкой).

 

---------------------------

 

Откуда инфа, что $cache = '1.0.1.cfcd208495d565ef66e7dff9f98764da' ? Эта переменная вообще по-другому формируется.

 

В модели выводил на экран передаваемый текст - был один вариант (собственно, под каким и сохранялся кэш), а в метод класса приходит уже другой (а кэша с таким именем уже нет)!

При том такой запрос кэша формируется только в этом методе и только в этой модели! Т.е. только для кэшей которые начинаются с product.total.1.0.1.*.

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


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

Да, ошибся:

$cache = md5(http_build_query($data)); //cfcd208495d565ef66e7dff9f98764da

Значит имя файла кэша cache.product.total.1.0.1.cfcd208495d565ef66e7dff9f98764da.$UTC. 

if (!$product_data and $product_data === NULL) {
//замените на 
if (empty($product_data)) {

Пришлите в ЛС данные для доступа к магазину или сорцы с БД на talgatks@gmail.com, я посмотрю. 

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


Ссылка на сообщение
Поделиться на другие сайты
uorypm    0
Пришлите в ЛС данные для доступа к магазину или сорцы с БД на talgatks@gmail.com, я посмотрю. 

 

К сожалению, это невозможно.

 

debug_backtrace'ом выяснил, что среди прочих вызывается файл "/vqmod/vqcache/vq2-catalog_model_catalog_product.php" и в нем вызывается тот самый метод класса, но строка к кэшу формируется уже по-другому:

// Start filter change
	    $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.'.md5($filter). '.'. $cache); 
// End filter

Сравните с исходным запросом:

$product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);

 

Т.е. как раз тут и вставляется эта злополучная строка прямо посреди текста - " .md5($filter). ".

 

С vQmod никогда не работал. Как наиболее правильно исправить такую работу этого мода? Или ничего страшного, ели вмешаться в код напрямую?

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


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

Проблема в файле скрипта vQmod '/vqmod/xml/vqmod_filter_products.xml' :

 

	<operation>
            <search position="replace"><![CDATA[
            $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
            ]]></search>
            <add><![CDATA[
// Start filter change
	    $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.'.md5($filter). '.'. $cache); 
// End filter
            ]]></add>
        </operation>

 

Переменная $filter всегда имеет значение int(0), следовательно, md5(0) имеем - "cfcd208495d565ef66e7dff9f98764da".

 

Следует просто переписать замещающий код? Из знающих vQmod никто не подскажет? Нужна ли вообще переменная $filter и в каких случаях?

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


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

Проблема в файле скрипта vQmod '/vqmod/xml/vqmod_filter_products.xml' :

 

	<operation>
            <search position="replace"><![CDATA[
            $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
            ]]></search>
            <add><![CDATA[
// Start filter change
	    $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.'.md5($filter). '.'. $cache); 
// End filter
            ]]></add>
        </operation>

 

Переменная $filter всегда имеет значение int(0), следовательно, md5(0) имеем - "cfcd208495d565ef66e7dff9f98764da".

 

Следует просто переписать замещающий код? Из знающих vQmod никто не подскажет? Нужна ли вообще переменная $filter и в каких случаях?

 

Это XML файл какого-то модуля фильтра, если этот фильтр не используется на сайте, то можете просто переименовать vqmod_filter_products.xml на vqmod_filter_products.xml.bak, при обновлении страницы vqmod его не обработает и файл /vqmod/vqcache/vq2-catalog_model_catalog_product.php примет прежний вид. 

Если же этот фильтр используется, то обратитесь к его автору. Если же понадобится помощь, то я уже писал ранее свои контакты.

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От pikitos

      2 299.00 руб
      Скачать/Купить дополнение


      2.x Revolution. Адаптивный универсальный шаблон
       
      Демонстрация:
      Магазин техники Apple Магазин авто-запчастей Магазин пиццерии Магазин авто-товаров (пример 1) Магазин авто-товаров (пример 2) Магазин одежды и обуви Магазин косметики Админка доступ: demo / demo Ссылка на валидатор Ссылка на PageSpeed  
      Как купить и очень легко и быстро установить шаблон и начать работать показано на видео. Видео старое и качество огонь..
      Так же прошу учитывать мой часовой пояс: + 4 часа к Московскому времени (GMT+7). Это если вдруг у вас вечер, а ответа все нет, будет утром.
      !Внимание: Для шаблона начиная с версии 2.0 должны быть установлены на сервере - PHP версии 5.4 и выше + Ioncube Loader версии 5.0 и выше.
      Чтобы узнать вашу версию php и ioncube, скачайте файл, распакуйте, загрузите к себе в корень сайта и откройте по адресу http://ваш-сайт.ru/myinfo.php
      Шаблон Revolution - это результат многолетнего опыта работы с cms opencart и сферой e-commerce в целом. Главная идея - чистота, минимализм и выделение товара на главный план. Любое решение в шаблоне обосновано.
      Настройки шаблона продуманы и взаимосвязаны. В шаблоне продуманы многие мелочи. Если товара нет в наличии, быстрый заказ не доступен (но его можно включить, есть опция). Возможность использовать магазин как каталог, без кнопки купить и корзины в пару кликов. Если корзина стоит всплывающая, то убирается "стрелка вниз" на Корзине покупок указывающая на ее корзины. Меняется сортировка товаров в зависимости от доступности товара для заказа. И тому подобные взаимосвязи.
       
      Функционал:
      2 типа меню каталога товаров: Amazon меню и горизонтальное выпадающее. Быстрый поиск в шапке сайта с возможностью выбора категории поиска. Заказ обратного звонка в шапке сайта. Дополнительные контакты. Новые страницы каталога: Новинки и Хиты продаж. Встроенный модуль новостей с выбором товаров для новости. Отзывы на магазин. Информационные блоки на главной странице. 6 настраеваемых слайдеров товаров. Новинки, Хиты продаж, Акции и 3 пользовательских слайдера. Виджет vk на главной странице. Настраевыемые сортировки в каталоге товаров. Автоматические настраевыемые стикеры товаров: новинка, хит продаж, акция. Быстрый заказ товара. Полностью переделана страница сравнения товаров. Теперь она адаптивная, выбор параметров сравнения, идет сравнение товаров по категории, кнопка показа только отличий. Меняются и сохраняются кнопки после добавления товаров в сравнение или закладки. 3 вид отображения товаров в каталоге. Всплывающая корзина. Быстрый просмотр товара. В закладки добавление без регистрации. Выбор вывода характеристик в карточке товара с ограничением. Выбор какие данные показывать в карточке товара. В карточке товара зум для фото и слайдер дополнительных фото. Дополнительные вкладки для всех товаров с настройками. Дополнительные вкладки отдельно для каждого товара. Отображение новостей в карточке товара к которым он прикреплен. Подписка на новости, с выбором пользователей для рассылки в админке. Иконки социальных сетей в подвале сайта. Иконки платежных систем в подвале сайта. В контактах карта формируется автоматически из адреса. Внимание! На сайте auto.oc-mod.ru и moda.oc-mod.ru показана адаптация для модулей: Simple - упрощенная регистрация и заказ; filter Pro. В состав шаблона входит только адаптация для этих модулей (в архиве с шаблоном в папке "_Фиксы для других модулей"). Микро-разметка. ... еще много чего (допишется позже). Лицензия:
      Шаблон можно приобрести на форуме и запросить лицензионный ключ в личном сообщении, написав домен на котором он будет использоваться. Шаблон можно использовать только на одном домене. + Выдается ключ на тестовый домен. В след. версиях добавиться:
      Поддержка мультимагазина И что еще нужно пишите.. Включена адаптация для популярных модулей:
      Модуль Simple - упрощенная регистрация и заказ filter Pro более полное описание добавится попозже...
      .
      Добавил pikitos Добавлено 05.06.2016 Категория Платные шаблоны Системные требования PHP v5.4+ и Ioncube Loader v5.0+ Сайт разработчика oc-mod.ru Старая цена Метод активации По запросу в ЛС
      По запросу на почту
      По скайпу
      По емейлу
      Через официальный сайт дополнения Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1  
    • От Kiselove
      Группировка товаров. Отображение на сайте. 

      Сейчас: 
      Группировка происходит за счет создания в админке серии товаров, к которой приписываются товары, входящие в эту серию. При отображении группы товаров на сайте в списке товаров цена подписана в формате "От…". Все товары данной группы можно увидеть, а также цены и вес, цвет и т.д., только зайдя в карточку товара. 

      Реализовать: 
      Вывод группы товара в списке с отображением всех атрибутов каждого товара в группе. Примеры с других магазинов в примечании. Т.е. у покупателя должна быть возможность моментального выбора нужного веса, цвета и т.д. в группе товаров, не заходя в карточку товара. Еще бывает что у товара до 20 разновидностей (обычно это одежда с размерами) – можно выводить списком тогда выпадающим, если атрибутов больше 6-7 
    • От androidpos

      3 000.00 руб
      Скачать/Купить дополнение


      54ФЗ Касса интернет-магазина (фискальный регистратор)
      Регистрация электронных платежей в соответствии с 54ФЗ. Данные с Вашего сайта поступают прямо на Ваш ПК и ФР. Никаких ежемесячных платежей и посредников по передаче данных. Любая модель регистраторов Штрих и Атол. Отправка данных ОФД, электронные чеки. Может работать с несколькими магазинами одновременно. OpenCart 1.5-2.0 - 2.3
       
      "Касса интернет-магазина" представляет собой комплекс из двух модулей - один устанавливается на сайте интернет-магазина, другой на ПК под управлением ОС Windows. К этому же ПК подключается фискальный регистратор (далее ФР).
      После оплаты покупателем товара и перехода статуса заказа в заранее выбранный при настройке, модуль сайта производит отправку информации об оплаченном заказе на ПК .Обработанные данные заносятся в базу и передаются на ФР. После регистрации происходит автоматическая передача данных ОФД (оператору фискальных данных), который в свою очередь фиксирует продажу и отправляет электронный чек покупателю на адрес, указанный при заказе. На всё уходит 1-2 сек.
      С текущей версии включена поддержка работы с курьерами.
      Требования к хостингу:
      - PHP от 5.4
      - ionCube Loader от 5.0 (два зашифрованных файла)
      - разрешённые исходящие соединения (на любом порту)
      Требования к ПК:
      - ОС Windows 7
      - .NET Framework 4.0
      - установленные драйвера ФР - в зависимости от выбранной модели
      - выделенный IP (локальной сети или ПК)
      Фискальный регистратор (ФР) - любая модель Штрих или Атол, поддерживающая 54ФЗ.
      Возможности модуля на хостинге:
      - ввод IP для связи
      - данные логина и пароля для связи
      - выбор отслеживаемого статуса заказа
      - создание и сохранение списка видов платежей, которые следует считать электронными и фиксировать по 54ФЗ.
      - отправка и учет всех видов бонусов и скидок в заказе
      - сохранение (для последующей передачи) неотправленных по какой-либо причине оплаченных заказов
      - приём и передача информации на ФР от модуля "Смартфон курьера для OpenCart +54ФЗ"
      Возможности модуля на ПК:
      - автоматическая авторизация подключения
      - работа по HTTP и HTTPS
      - фильтрация по IP
      - запись данных в базу, вывод журнала, просмотр отдельных заказов (чеков)
      - при отсутствии связи с ФР накопление незарегистрированных чеков
      - все функции управления ФР, возвраты
      - возможность отключения печати чеков на ленте, с записью только в ФН (что предусмотрено 54ФЗ для удалённых электронных платежей)
      - пробитие как он-лайн чеков (оплата на сайте\платёжной системе), так за наличный расчет
      - тест канала связи
      - тест модуля на сайте
      Кроме этого, система имеет закодированную передачу данных и стойкое шифрование (256 бит) авторизации.
      В архиве три установки на OC (1.5, 2.0-2.2, 2.3), установщик Windows.
      Лицензия (ключ) по запросу после приобретения.
      Драйвера для регистраторов, бесплатные демо-версии (v1.0.1), ссылки на демо доступы здесь.
      Сайт поддержки - help.android-pos.ru
       
      Быстро и бесплатно спрашиваем здесь:  WhatsApp
       
      Новая услуга - удалённое подключение под ключ (при выполнении требований к оборудованию и ПО). Подробнее - support@android-pos.ru или ЛС.
       
      Добавил androidpos Добавлено 01.07.2017 Категория Платежные системы Системные требования Сайт разработчика http://cash.android-pos.ru Старая цена Метод активации По запросу в ЛС Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От androidpos
      Регистрация электронных платежей в соответствии с 54ФЗ. Данные с Вашего сайта поступают прямо на Ваш ПК и ФР. Никаких ежемесячных платежей и посредников по передаче данных. Любая модель регистраторов Штрих и Атол. Отправка данных ОФД, электронные чеки. Может работать с несколькими магазинами одновременно. OpenCart 1.5-2.0 - 2.3
       
      "Касса интернет-магазина" представляет собой комплекс из двух модулей - один устанавливается на сайте интернет-магазина, другой на ПК под управлением ОС Windows. К этому же ПК подключается фискальный регистратор (далее ФР).
      После оплаты покупателем товара и перехода статуса заказа в заранее выбранный при настройке, модуль сайта производит отправку информации об оплаченном заказе на ПК .Обработанные данные заносятся в базу и передаются на ФР. После регистрации происходит автоматическая передача данных ОФД (оператору фискальных данных), который в свою очередь фиксирует продажу и отправляет электронный чек покупателю на адрес, указанный при заказе. На всё уходит 1-2 сек.
      С текущей версии включена поддержка работы с курьерами.
      Требования к хостингу:
      - PHP от 5.4
      - ionCube Loader от 5.0 (два зашифрованных файла)
      - разрешённые исходящие соединения (на любом порту)
      Требования к ПК:
      - ОС Windows 7
      - .NET Framework 4.0
      - установленные драйвера ФР - в зависимости от выбранной модели
      - выделенный IP (локальной сети или ПК)
      Фискальный регистратор (ФР) - любая модель Штрих или Атол, поддерживающая 54ФЗ.
      Возможности модуля на хостинге:
      - ввод IP для связи
      - данные логина и пароля для связи
      - выбор отслеживаемого статуса заказа
      - создание и сохранение списка видов платежей, которые следует считать электронными и фиксировать по 54ФЗ.
      - отправка и учет всех видов бонусов и скидок в заказе
      - сохранение (для последующей передачи) неотправленных по какой-либо причине оплаченных заказов
      - приём и передача информации на ФР от модуля "Смартфон курьера для OpenCart +54ФЗ"
      Возможности модуля на ПК:
      - автоматическая авторизация подключения
      - работа по HTTP и HTTPS
      - фильтрация по IP
      - запись данных в базу, вывод журнала, просмотр отдельных заказов (чеков)
      - при отсутствии связи с ФР накопление незарегистрированных чеков
      - все функции управления ФР, возвраты
      - возможность отключения печати чеков на ленте, с записью только в ФН (что предусмотрено 54ФЗ для удалённых электронных платежей)
      - пробитие как он-лайн чеков (оплата на сайте\платёжной системе), так за наличный расчет
      - тест канала связи
      - тест модуля на сайте
      Кроме этого, система имеет закодированную передачу данных и стойкое шифрование (256 бит) авторизации.
      В архиве три установки на OC (1.5, 2.0-2.2, 2.3), установщик Windows.
      Лицензия (ключ) по запросу после приобретения.
      Драйвера для регистраторов, бесплатные демо-версии (v1.0.1), ссылки на демо доступы здесь.
      Сайт поддержки - help.android-pos.ru
       
      Быстро и бесплатно спрашиваем здесь:  WhatsApp
       
      Новая услуга - удалённое подключение под ключ (при выполнении требований к оборудованию и ПО). Подробнее - support@android-pos.ru или ЛС.
       
    • От KoRNeT
      У заказчика есть опция, в которой 22тыс. значений.
      При этом возникает проблема при редактировании товара (подгрузка всех значений (22к) в селект опции), а также проблема при переходе в раздел "Опции", при загрузке списка всех значений опции.
      Есть мысль о 2х решениях, но не знаю даст ли это плоды:
      1) систему кеширования на мемкэше
      2) каким то образом прикрутить пагинацию в раздел "Опции", чтобы было ограниченное количество значений опции на страницу (не знаю есть ли уже готовый модуль. Если есть, поделитесь пжлста).

      Все это на Opencart 1.5.6. 
      Если есть какие -нибудь другие варианты в вашей голове, или кто-то сталкивался с подобной проблемой, или знает модули, которые могут решить проблему, отпишитесь тут пожалуйста. Очень надеюсь на поддержку. 
  • Последние посетители   0 пользователей онлайн

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