исправлено Дублирование данных

Sprinx

Пользователь
#1
Оцелот делает дубли данных.
Наверное из-за ключей.
 
Последнее редактирование:

Sprinx

Пользователь
#2
Фиксы, теперь не плодит.
Но настораживает одно, при выключение и включение торрента, в bb_bt_tracker, вносятся дубликаты данных, с новым peer_hash. Так и должно быть?
Код:
CREATE TABLE IF NOT EXISTS `bb_bt_tracker` (
`peer_hash` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`topic_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`peer_id` varchar(20) NOT NULL,
`user_id` mediumint(9) NOT NULL DEFAULT '0',
`ip` varchar(15) NOT NULL DEFAULT '0',
`client` varchar(51) NOT NULL DEFAULT 'Unknown',
`ipv6` varchar(32) DEFAULT NULL,
`port` smallint(5) unsigned NOT NULL DEFAULT '0',
`seeder` tinyint(1) NOT NULL DEFAULT '0',
`releaser` tinyint(1) NOT NULL DEFAULT '0',
`tor_type` tinyint(1) NOT NULL DEFAULT '0',
`uploaded` bigint(20) unsigned NOT NULL DEFAULT '0',
`downloaded` bigint(20) unsigned NOT NULL DEFAULT '0',
`remain` bigint(20) unsigned NOT NULL DEFAULT '0',
`speed_up` mediumint(8) unsigned NOT NULL DEFAULT '0',
`speed_down` mediumint(8) unsigned NOT NULL DEFAULT '0',
`up_add` bigint(20) unsigned NOT NULL DEFAULT '0',
`down_add` bigint(20) unsigned NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`complete_percent` bigint(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`peer_hash`),
  KEY `topic_id` (`topic_id`),
  KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `bb_bt_tracker_snap` (
`topic_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`seeders` mediumint(8) unsigned NOT NULL DEFAULT '0',
`leechers` mediumint(8) unsigned NOT NULL DEFAULT '0',
`speed_up` int(10) unsigned NOT NULL DEFAULT '0',
`speed_down` int(10) unsigned NOT NULL DEFAULT '0',
`complete` int(11) NOT NULL,
  PRIMARY KEY (`topic_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 

Softwarez

Пользователь
#3
Код:
std::size_t peer_hash = string_hash(peer_id+info_hash_decoded+inttostr(port)+ip)
в worker.cpp, если выкинуть порт, не будет дубликатов... но в xbtt было так(вроде бы), поэтому его оставил.
 

Softwarez

Пользователь
#4
Код:
peer_hash = md5(v.m_info_hash+v.m_passkey+port_st+ip_st);
вот так было в xbtt, добавлять реализации md5 на c или тянуть либы для него не стал и заюзал встроенную хэш функцию буста, ибо она быстрее и не нужно там особой точности, для уникального ключа то, может оно на одинаковых строках разные хэши генерит, хз.
Проверил у себя - все ровно и работает как надо.
 
Последнее редактирование:
Сверху