Форум vBTorrents.org  
Вернуться   Форум vBTorrents.org > Движок торрент трекера VBTT > VBTT v.2.0

VBTT v.2.5 beta (последняя с php-аннонсером)

Ответ
 
Опции темы
Старый 20.03.2010, 10:12   #11
Аватар для miniminimum
miniminimum miniminimum вне форума
Новичок
Я правильно понял? Если в настройке: "Переносить неактивные пиры и их статистику в архивную БД по прошествии заданного интервала времени в секундах" стоит 36000, то статистика пользователя будет обновляться каждые 10 часов. Или есть нюансы?
Ответить с цитированием
Старый 20.03.2010, 15:21   #12
Аватар для NetS
NetS NetS вне форума
Ученик
Ура! Всё взял напильник в зубы и пошёл прикручивать

Добавлено через 1 час 45 минут
Так пошли непонятки:

1. `peer_id` char(32) NOT NULL default '' -> `peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'

Само по ALTER TABLE MODIFY сконвертится или нужен напильник?

2. Какая тут преследуется логика? Необходимо найти соответствие старым значениям и новым
Старые поля:
`active` int(11) unsigned NOT NULL
`announced` int(11) unsigned NOT NULL,
`completed` int(11) unsigned NOT NULL,

Новое поле:
`lastevent` enum('','started','stopped','completed') NOT NULL default '',


4. Что пишется в эти поля и по какому принципу они заполняются?
`pid` binary(4) NOT NULL,
`upload_user` bigint(20) unsigned NOT NULL default '0',
`download_user` bigint(20) unsigned NOT NULL default '0',

PS как разберусь будет конвертор В остальном уже всё готово
Ответить с цитированием
Старый 21.03.2010, 15:49   #13
Аватар для Skald
Skald Skald вне форума
Администратор
NetS, самый простой вариант переименовываем таблицу peers в peers_archive и удаляем в ней лишние поля. И создаем новую таблицу peers с нуля. Т.е. просто старая таблица peers разбита сейчас на 2 таблицы peers и peers_archive. В таблице peers храняться только активны пиры (для уменьшения размеров таблицы).

Для таблицы peers_archive и поля `download_user` и `upload_user` надо приравнять к `download_sum` и`upload_sum` соответственно. Потом эти значения будут отличаться, но т.к. в версии 2.0.2 не сохранялась отдельно реальная стата по трафу и засчитанная стата пользователю, поэтому нужно при апдейте сделать эти поля равными.

насчет `lastevent`, `pid` и др. полей новой таблицы peers. Т.к. при обновлении она будет пустая, то можно не заморачиваться.

Более подробно о логике переноса активных пиров в таблицу архива можно глянуть в крон файле vbtt_peers_arc.php
Ответить с цитированием
Старый 22.03.2010, 10:44   #14
Аватар для NetS
NetS NetS вне форума
Ученик
Отлично значит всё ещё проще Я хотел сделать наоборот )
Ответить с цитированием
Старый 22.03.2010, 18:34   #15
Аватар для NetS
NetS NetS вне форума
Ученик
Обновились

CREATE TABLE `peers_leechers` (
`uid` int(10) unsigned NOT NULL default '0',
`fid` int(10) unsigned NOT NULL default '0',
`mtime` int(10) unsigned NOT NULL default '0',
UNIQUE KEY `uid_fid` (`uid`,`fid`),
KEY `mtime` (`mtime`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;

CREATE TABLE `peers_port` (
`ipa` int(11) unsigned NOT NULL default '0',
`port` smallint(5) unsigned NOT NULL default '0',
`connectable` tinyint(3) unsigned default NULL,
`mtime` int(11) unsigned NOT NULL default '0',
UNIQUE KEY `ipa_port` (`ipa`,`port`),
KEY `mtime` (`mtime`),
KEY `connectable` (`connectable`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS peers_cache;

CREATE TABLE `peers_cache` (
`n` int(11) unsigned NOT NULL auto_increment,
`pid` binary(4) NOT NULL default '\0\0\0\0',
`uid` int(11) unsigned NOT NULL default '0',
`fid` int(11) unsigned NOT NULL default '0',
`event` enum('','started','stopped','completed') NOT NULL default '',
`downloaded` bigint(20) unsigned NOT NULL default '0',
`left` bigint(20) unsigned NOT NULL default '0',
`uploaded` bigint(20) unsigned NOT NULL default '0',
`bonus` smallint(5) unsigned NOT NULL default '0',
`peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`ipa` int(11) unsigned NOT NULL default '0',
`port` smallint(5) unsigned NOT NULL default '0',
`mtime` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`n`)
) ENGINE=MEMORY AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

ALTER TABLE `peers`
DROP COLUMN active,
DROP COLUMN announced,
DROP COLUMN pclass,
DROP COLUMN uploaded,
DROP COLUMN downloaded,
DROP COLUMN upspeed,
DROP COLUMN downspeed,
DROP COLUMN ipa,
DROP COLUMN port,
DROP INDEX fid_uid,
DROP INDEX connectable,
DROP INDEX completed,
DROP INDEX uid;

ALTER TABLE `peers`
ADD UNIQUE KEY `uid_fid` (`uid`,`fid`),
ADD INDEX `fid` (`fid`),
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
MODIFY `peer_id` binary(8) NOT NULL default '\0\0\0\0\0\0\0\0',
MODIFY `completed` tinyint(4) unsigned NOT NULL default '0',
RENAME peers_archive;

UPDATE `peers_archive` SET `upload_user`=`upload_sum`, `download_user`=`download_sum`;

CREATE TABLE `peers` (
`pid` binary(4) NOT NULL,
`uid` int(11) unsigned NOT NULL,
`fid` int(11) unsigned NOT NULL,
`lastevent` enum('','started','stopped','completed') NOT NULL default '',
`downloaded` bigint(20) unsigned NOT NULL default '0',
`left` bigint(20) unsigned NOT NULL,
`uploaded` bigint(20) unsigned NOT NULL default '0',
`upspeed` bigint(20) unsigned NOT NULL default '0',
`downspeed` bigint(20) unsigned NOT NULL default '0',
`download_sum` bigint(20) unsigned NOT NULL default '0',
`download_user` bigint(20) unsigned NOT NULL default '0',
`upload_sum` bigint(20) unsigned NOT NULL default '0',
`upload_user` bigint(20) unsigned NOT NULL default '0',
`timespent` bigint(20) unsigned NOT NULL,
`peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`ipa` int(11) unsigned NOT NULL,
`port` smallint(5) unsigned NOT NULL default '0',
`mtime` int(11) unsigned NOT NULL,
`flag` tinyint(3) unsigned NOT NULL default '0',
UNIQUE KEY `uid` (`uid`,`pid`),
KEY `mtime` (`mtime`),
KEY `fid` (`fid`),
KEY `flag` (`flag`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ALTER TABLE `attachment`
DROP COLUMN ctime,
DROP COLUMN announce_list,
DROP INDEX ctime,
MODIFY `flags` int(11) unsigned NOT NULL default '0',
MODIFY `mtime` int(11) unsigned NOT NULL default '0',
MODIFY `size` bigint(20) unsigned NOT NULL default '0';

ALTER TABLE `user`
DROP COLUMN leechers,
DROP COLUMN seeders,
DROP COLUMN ctime,
DROP INDEX ctime;

Последний раз редактировалось NetS; 26.03.2010 в 17:31.
Ответить с цитированием
Старый 23.03.2010, 15:02   #16
Аватар для Aiser
Aiser Aiser вне форума
Новичок
ALTER TABLE `peers`
ADD UNIQUE KEY `uid_fid` (`uid`,`fid`),
ADD INDEX `fid` (`fid`),
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
MODIFY `peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
MODIFY `completed` tinyint(4) unsigned NOT NULL default '0',
RENAME peers_archive;

UPDATE `peers_archive` SET `upload_user`=`upload_sum`, `download_user`=`download_sum`;
Мне кажется или должно так?
ALTER TABLE `peers`
ADD UNIQUE KEY `uid_fid` (`uid`,`fid`),
ADD KEY `mtime` (`mtime`),
ADD KEY `fid` (`fid`),
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
MODIFY `peer_id` binary(8) NOT NULL default '\0\0\0\0\0\0\0\0',
MODIFY `completed` tinyint(4) unsigned NOT NULL default '0',
RENAME peers_archive;

UPDATE `peers_archive` SET `upload_user`=`upload_sum`, `download_user`=`download_sum`;
Да и ещё вот это у меня уже было:
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
Вот ещё в peers_archive нужна тоже удалить?
`useragent ` varchar(255) unsigned NOT NULL;
А в files ничего удалять не надо при обновлении?

Последний раз редактировалось Aiser; 23.03.2010 в 15:24.
Ответить с цитированием
Старый 23.03.2010, 15:40   #17
Аватар для NetS
NetS NetS вне форума
Ученик
Сообщение от Aiser Посмотреть сообщение
ADD KEY `mtime` (`mtime`),
уже есть этот ключ

Сообщение от Aiser Посмотреть сообщение
MODIFY `peer_id` binary(8) NOT NULL default '\0\0\0\0\0\0\0\0',
есть такое дело, но в таком случае не понимаю зачем в peers длина 20?

Сообщение от Aiser Посмотреть сообщение
Да и ещё вот это у меня уже было:
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
Скорее всего исправляли ранее в ручную Тут на форуме где-то об этом писалось

Сообщение от Aiser Посмотреть сообщение
Вот ещё в peers_archive нужна тоже удалить?
`useragent ` varchar(255) unsigned NOT NULL;
не было у меня такого Может ещё раньше почистил, т.к. не использовалось


Сообщение от Aiser Посмотреть сообщение
А в files ничего удалять не надо при обновлении?
если текущая структура совпадаёт, то нет А она вроде бы совпадает
Ответить с цитированием
Старый 23.03.2010, 16:40   #18
Аватар для Aiser
Aiser Aiser вне форума
Новичок
Да и какие тут изменения? Это вроде не бета, а альфа.
Ответить с цитированием
Старый 23.03.2010, 20:02   #19
Аватар для Skald
Skald Skald вне форума
Администратор
Aiser, Не нравится не кушаем - может немного грубо, но меня очень долго просили выложить последнюю версию - я выложил. Основные изменения, что почти все апдейты таблиц идут пакетно и если установлен xcache или ea, на аннонс/скрейп идет 0-2 простых запроса к БД и то к мемори таблицам.
И я отписался что эту версию не вижу смысла продолжать разрабатывать, т.к. совсем не перспективно, просто пхп+мускуль в привычном понимании не совсем подходящая технология для торрент трекера.
И не надо думать что бинарник панацея для торрент трекера, бинарник - да, но не в реализации xbtt - потому что даже пакетное обновление при большом пакете вызывает большие напряги на сервере. Все что я говорю имеет смысл только для действительно больших форумных трекеров. Для 95% трекеров хватит и версии 2.0.2 (разве что небольшие куски кода взять из 2.5), вот для остальных 4.9% нужна 2.5, а для оставшихся 0.1% может быть понадобится следующая версия, но там без умения ручной сборки пакетов уже точно не обойтись будет.


NetS, В общем все правильно, но для всех запросов лучше сделать несколько комментов, т.к. запрос типа
Код:
ALTER TABLE `peers`
ADD UNIQUE KEY `uid_fid` (`uid`,`fid`),
ADD INDEX `fid` (`fid`),
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';
MODIFY `peer_id` binary(20) NOT NULL default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
MODIFY `completed` tinyint(4) unsigned NOT NULL default '0',
RENAME peers_archive;
У многих может вызвать вопросы, т.к. RENAME peers_archive в конце можно и не заметить :)

И большое равно спасибо.

Последний раз редактировалось Skald; 23.03.2010 в 21:56. Причина: кое что подправил
Ответить с цитированием
Старый 23.03.2010, 20:55   #20
Аватар для NetS
NetS NetS вне форума
Ученик
Я правильно понимаю что проверка доступности порта вырезана под корень? коли так там можно будет ещё порезать и в шаблонах поправить А то народ смущается. Если сам дальше эту версию ковырять не будешь могу потом свою выкинуть со всеми правками.

PS Трекер летает :)

Добавлено через 1 минуту
Сори туплю Как сейчас работает проверка порта? peers_port табличка для этого?
Ответить с цитированием
Ответ


Здесь присутствуют: 14 (пользователей: 0 , гостей: 14)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Раздел Тема Автор Ответов Последнее сообщение
Вопросы, предложения tracker.php (torrents.php) как в ТоррентПир Ramzes 2 17.04.2010 02:52