Форум vBTorrents.org

Форум vBTorrents.org (https://vbtorrents.org/index.php)
-   VBTT v.2.0 (https://vbtorrents.org/forumdisplay.php?f=2)
-   -   VBTT v.2.5 beta (последняя с php-аннонсером) (https://vbtorrents.org/showthread.php?t=147)

miniminimum 20.03.2010 10:12

Я правильно понял? Если в настройке: "Переносить неактивные пиры и их статистику в архивную БД по прошествии заданного интервала времени в секундах" стоит 36000, то статистика пользователя будет обновляться каждые 10 часов. Или есть нюансы?

NetS 20.03.2010 15:21

Ура! Всё взял напильник в зубы и пошёл прикручивать

Добавлено через 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 как разберусь будет конвертор В остальном уже всё готово

Skald 21.03.2010 15:49

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

NetS 22.03.2010 10:44

Отлично значит всё ещё проще Я хотел сделать наоборот )

NetS 22.03.2010 18:34

Обновились

Цитата:

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;

Aiser 23.03.2010 15:02

Цитата:

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 ничего удалять не надо при обновлении?

NetS 23.03.2010 15:40

Цитата:

Сообщение от Aiser (Сообщение 2132)
ADD KEY `mtime` (`mtime`),

уже есть этот ключ

Цитата:

Сообщение от Aiser (Сообщение 2132)
MODIFY `peer_id` binary(8) NOT NULL default '\0\0\0\0\0\0\0\0',

есть такое дело, но в таком случае не понимаю зачем в peers длина 20?

Цитата:

Сообщение от Aiser (Сообщение 2132)
Да и ещё вот это у меня уже было:
ADD COLUMN `download_user` bigint(20) unsigned NOT NULL default '0',
ADD COLUMN `upload_user` bigint(20) unsigned NOT NULL default '0';

Скорее всего исправляли ранее в ручную Тут на форуме где-то об этом писалось

Цитата:

Сообщение от Aiser (Сообщение 2132)
Вот ещё в peers_archive нужна тоже удалить?
`useragent ` varchar(255) unsigned NOT NULL;

не было у меня такого Может ещё раньше почистил, т.к. не использовалось


Цитата:

Сообщение от Aiser (Сообщение 2132)
А в files ничего удалять не надо при обновлении?

если текущая структура совпадаёт, то нет А она вроде бы совпадает

Aiser 23.03.2010 16:40

Да и какие тут изменения? Это вроде не бета, а альфа.

Skald 23.03.2010 20:02

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 в конце можно и не заметить :)

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

NetS 23.03.2010 20:55

Я правильно понимаю что проверка доступности порта вырезана под корень? коли так там можно будет ещё порезать и в шаблонах поправить А то народ смущается. Если сам дальше эту версию ковырять не будешь могу потом свою выкинуть со всеми правками.

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

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


Текущее время: 23:46. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4 Patch Level 6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot