DimbIch
Новичок
Оптимизация скорости работы
Здрасти.
Задача:
Посчитать сколько раз нажали на ссылку за сутки.
Что есть:
Таблица и ее структура
CREATE TABLE `kp_adv_stats` (
`id` int(10) NOT NULL auto_increment,
`adv_id` int(10) unsigned NOT NULL default '0',
`click_user` int(20) unsigned NOT NULL default '0',
// это сколько кликнули на одну ссылку
`click_link` int(20) unsigned NOT NULL default '0',
// это сколько кликнули на вторую ссылку
`date` int(10) unsigned default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Реализация имеющаяся:
Как должно быть:
Если в таблице нет записи за сегодня то мы добавляем запись с нулевыми значениями. Если есть уже запись то мы увеличиваем то или иное значение на 1
Как хочеться:
как то это оптимизировать можно ?
Здрасти.
Задача:
Посчитать сколько раз нажали на ссылку за сутки.
Что есть:
Таблица и ее структура
CREATE TABLE `kp_adv_stats` (
`id` int(10) NOT NULL auto_increment,
`adv_id` int(10) unsigned NOT NULL default '0',
`click_user` int(20) unsigned NOT NULL default '0',
// это сколько кликнули на одну ссылку
`click_link` int(20) unsigned NOT NULL default '0',
// это сколько кликнули на вторую ссылку
`date` int(10) unsigned default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Реализация имеющаяся:
PHP:
$stats = Registry::instance()->Advertisment->getTodayStats($id);
$today = mktime(0, 0, 0, (int)date('m'), (int)date('d'), (int)date('Y'));
if(empty($stats)) {
$data = array();
$data['adv_id'] = $id;
$data['click_user'] = 0;
$data['click_link'] = 0;
$data['date'] = $today;
($action == 'user') ? $data['click_user'] = 1 : $data['click_link'] = 1;
Registry::instance()->DB->autoExecute(PREFIX.'adv_stats', $data, DB_AUTOQUERY_INSERT);
}
else
{
if($action == 'user')
{
Registry::instance()->DB->query('UPDATE '.PREFIX.'adv_stats SET click_user = click_user+1 WHERE adv_id = ? AND date = ?', array($id, $today));
}
elseif($action == 'link') {
Registry::instance()->DB->query('UPDATE '.PREFIX.'adv_stats SET click_link = click_link+1 WHERE adv_id = ? AND date = ?', array($id, $today));
} }
Если в таблице нет записи за сегодня то мы добавляем запись с нулевыми значениями. Если есть уже запись то мы увеличиваем то или иное значение на 1
Как хочеться:
как то это оптимизировать можно ?