Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Кеширование SELECT COUNT(*)


Recommended Posts

Добрый вечер, решил создать статистику (кол-во товаров, категорий, производителей) и вывести все на главную страницу

Понятное дело что эту штуку лучше кешировать... В этом и беда, хочу закешировать сразу 3 значение кол-во товаров и кол-во категорий и кол-во производителей.. Как это сделать в модели?

 

	public function getHomeCount($data = array()) {
		$cache = md5(http_build_query($data));
		
		$home_count_data = $this->cache->get('home.count.total.' . $cache);
		
        if (!$home_count_data) {
	        $sql = "SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "category`";
			$sql = "SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "product`";
            $sql = "SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "manufacturer`";
			

			$query = $this->db->query($sql);
			
			$home_count_data = $query->row['total']; 
			
			$this->cache->set('home.count.total.' . $cache, $home_count_data);
		}
		
		return $home_count_data;
	}	

Хочу выводить 3 разных значение и брать их из кеша файла home.count.total. понятное дело ...

 

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

Надіслати
Поділитися на інших сайтах

26 минут назад, zomo сказал:

Понятное дело что эту штуку лучше кешировать...

нет

 

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

посмотрите в модели моего сайтмапа

 

более того, если он установлен вы можете использовать вызов его модели

$this->load->model('module/fx_sitemap');

$total_p = $this->model_module_fx_sitemap->getProductsTotal();
$total_c = $this->model_module_fx_sitemap->getCategoriesTotal();
$total_m = $this->model_module_fx_sitemap->getManufacturersTotal();

 

но лучше склонировать чтоб не зависеть

  • +1 1
Надіслати
Поділитися на інших сайтах

как-то так

 

public function getHomeCount($data = array()) {
		
		
		$home_count_data = $this->cache->get('home.count.total');
		
        if (!$home_count_data) {

			$home_count_data = array();
			$home_count_data['category'] = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "category`")->row['total'];
			$home_count_data['product'] = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "product`")->row['total'];
			$home_count_data['manufacturer'] = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "manufacturer`")->row['total'];

			$this->cache->set('home.count.total', $home_count_data);
		}
		
		return $home_count_data;
	}	

 

  • +1 1
Надіслати
Поділитися на інших сайтах

26 минут назад, Otvet сказал:

 нет

 

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

 посмотрите в модели моего сайтмапа

  

более того, если он установлен вы можете использовать вызов его модели


$this->load->model('module/fx_sitemap');

$total_p = $this->model_module_fx_sitemap->getProductsTotal();
$total_c = $this->model_module_fx_sitemap->getCategoriesTotal();
$total_m = $this->model_module_fx_sitemap->getManufacturersTotal();

 

но лучше склонировать чтоб не зависеть

А чего против кеширование если не секрет ?

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.