Содержание
Статистика перехода по коротким ссылкам
Битрикс считает только количество переходов по коротким ссылкам. Если необходима статистика перехода по дням, предлагается следующее решение с «минимумом» программирования.
Таблица b_short_uri
Так выглядит штатная таблица коротких ссылок Bitrix:
CREATE TABLE `b_short_uri` ( `ID` int(18) NOT NULL AUTO_INCREMENT, `URI` varchar(250) NOT NULL, `URI_CRC` int(18) NOT NULL, `SHORT_URI` varbinary(250) NOT NULL, `SHORT_URI_CRC` int(18) NOT NULL, `STATUS` int(18) NOT NULL DEFAULT '301', `MODIFIED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `LAST_USED` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `NUMBER_USED` int(18) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `ux_b_short_uri_1` (`SHORT_URI_CRC`), KEY `ux_b_short_uri_2` (`URI_CRC`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Таблица short_uri_details
Создаем новую таблицу, в которую будет сохраняться статистика:
CREATE TABLE `short_uri_details` ( `ID` int(18) NOT NULL, `DATE` DATE NOT NULL, `COUNT` INT(11) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`ID`, `DATE`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Триггеры
Создаем триггеры, которые будут учитывать статистику:
DROP TRIGGER IF EXISTS `short_uri_insert`; DROP TRIGGER IF EXISTS `short_uri_update`; DELIMITER $$ CREATE TRIGGER `short_uri_insert` AFTER INSERT ON `b_short_uri` FOR EACH ROW BEGIN INSERT INTO `short_uri_details` (`ID`, `DATE`, `COUNT`) VALUES (NEW.ID, NOW(), 0); END; $$ CREATE TRIGGER `short_uri_update` BEFORE UPDATE ON `b_short_uri` FOR EACH ROW BEGIN INSERT INTO `short_uri_details` (`ID`, `DATE`, `COUNT`) VALUES (NEW.ID, NOW(), 0) ON DUPLICATE KEY UPDATE COUNT = COUNT + 1; END; $$ DELIMITER ;