Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Re-Tracker source
Re-Tracker | Система локальных ретрекеров | Ретрекер > РеТрекер > Статистика
Страницы: 1, 2, 3, 4
chmv
Ревизия последняя из транка. Вытянул svn'ом. Т.е. 72ая. Собственно я не обновлялся, я впервые его запускаю. Может подскажете, какая ревизия однозначно работающая?
FreeM@N
Ну вообще последняя всегда рабочая smile.gif
chmv
Сказка. Тогда расскажу, что я сделал.
Апач + PHP + MySQL свежеустановленные, взяты с официальных сайтов.
В MySQL создал DB, выполнил скрипт по созданию таблиц.
Апачу сконфигурил виртуальный хост.
В конфиге ретрекера прописал доступ к DB. (это точно работает, проверил smile.gif )
В тестовом торренте прописал адрес тестового ретрекера (больше трекеров там нет) в виде
http://retracker.local/announce

Что имею. При обращении к ретрекеру, клиент (utorrent) ругается. Эмуляция этого же запроса под дебаггером показывает, что $size не определена, и вылетает по ошибке mysql. Если добавить код типа if (!$size) $size = 0; то дальше вываливается из за неопределенного $city.

Полез выяснять что должно быть в $city, из таблиц берется. Но где оно загоняется в таблицы, так и не понял. При запуске trackerslist.php на выходе всегда пусто. Может быть у Вас оно работает, потому, что та же база трекеров уже заполнена? Начать можно с trackerslist.php . Почему он всегда возвращает пустой список? (в предыдущем сообщении я описывал анализ кода под дебаггером)

Пожалуйста, подскажите где я ошибаюсь? Может быть я просто не знаю логики работы этого ретрекера? Очень не хочется оставаться на сверх мини ретрекере от т.ру. Пожалуйста.

PS Да, я могу начать править, чтобы оно однозначно заработало. Но не зная в точности логики работы, задумок автора, я могу только испортить все, и лишить себя возможности обновлений.
chmv
Цитата(FreeM@N @ 22.9.2009, 19:37) *
Ну вообще последняя всегда рабочая smile.gif

К моему большому сожалению, Вы в корне не правы.

Кусок кода из resume.php
Код
<select name="city" id="city" onchange="$('#isp').load('resume.php?city='+$('#city').val());">
    <option value="0">» Выберите город</option>
    <?=iconv('UTF-8', 'CP1251', city_select($trackers['Город'], $city));?>
</select>
<select name="isp" id="isp" onchange="$('#tr').load('resume.php?tr_list=1&city='+$('#city').val()+'&isp='+$('#isp').val());">
    <option value="0">» Выберите провайдера</option>
</select>

Если ЭТО рабочая версия, в которой список провайдеров вообще не заполняется, т.к. кода вообще нет, то что же тогда называется нерабочей? smile.gif
И это уже после обработки топором, четырмя строками выше вообще вызывался не resume.php а torrents.php.

announce.php
Код
$sql_data = array(
        'torrent_id'     => $torrent_id,
        'peer_hash'     => $peer_hash,
        'ip'             => $ipv4,
        'ipv6'             => $ipv6,
        'port'             => $port,
        'seeder'         => $seeder,
        'update_time'     => TIMENOW,
        'city'             => !empty($isp[0]) ? $isp[0] : null,
        'isp'             => !empty($isp[1]) ? $isp[1] : null
);

Да, это правильно, выставлять null для неопределенных элементов, когда в таблице для этих полей сказано:
Код
  `city` mediumint(2) NOT NULL DEFAULT '0',
  `isp` mediumint(2) NOT NULL DEFAULT '0',


Ну и по мелочи. Если size не было в запросе, тоже падаем, т.к. база null не принимает. Лечится элементарно типа:
if (!$size) $size = 0;

Вы продолжаете утверждать о работоспособности этого кода? smile.gif
FreeM@N
Цитата
Вы продолжаете утверждать о работоспособности этого кода?

Конечно smile.gif Он же работает.

Я ещё раз повторяю если вы это не прочитали ранее - это не ретрекер, это "статистический ретрекер", использовать его как ретрекер крайне не рекомендуестся из-за наличия ненужных для обычного ретрекера функций!

Цитата
Если ЭТО рабочая версия, в которой список провайдеров вообще не заполняется, т.к. кода вообще нет, то что же тогда называется нерабочей?

Там так-то аяксовый запрос идёт на заполнение. HTML+JS не сбрасывайте со стчетов...
Код
<select name="city" id="city" onchange="$('#isp').load('resume.php?city='+$('#city').val());">

Так что заполять его заранее абсолюно бессмысленно.
Цитата
И это уже после обработки топором, четырмя строками выше вообще вызывался не resume.php а torrents.php.

Хреновый топор у вас...ретрекер - это единое целое, а едином целом нормально когда одни кусочки программы используют другие. Если ещё не поняли - так и было задумано.

Цитата
Да, это правильно, выставлять null для неопределенных элементов, когда в таблице для этих полей сказано

а кусочек кода:
Код
foreach ($sql_data as $column => $value)
{
    $columns[] = $column;
    $values[] = "'" . $db->escape($value) . "'";
}

вы не удалили случаем? после обработки в базу вместо null уходит '' (две одинарные кавычки, а между ними пусто).
Поробуйте выполнить вот такой SQL:
Код
DROP TABLE IF EXISTS `test`;
CREATE TABLE IF NOT EXISTS `test` (
  `index` int(11) NOT NULL auto_increment,
  `test` int(11) NOT NULL default '0',
  PRIMARY KEY  (`index`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

INSERT INTO `test` VALUES (NULL, '');

SELECT `test` FROM `test` ORDER BY `index` DESC LIMIT 1;

чево вернёт? Это я к тому что работает.

А так да, вы правы, лучше будет заранее выставить 0.

Продолжайте комментировать код, это полезно smile.gif
4e4ako
Цитата(chmv @ 23.9.2009, 3:54) *
Вы продолжаете утверждать о работоспособности этого кода? smile.gif

этот ретрекер, ретрекер от т.ру и псевдотрекер - совершенно разные коды и таблицы. не забывайте, если пробуете поставить друг на друга.


З.ы. если вы не смогли запустить этот код - поставьте ретрекер от т.ру и не мучайтесь (и вам нервы целее - и автору этого кода)
chmv
Цитата(4e4ako @ 23.9.2009, 11:28) *
этот ретрекер, ретрекер от т.ру и псевдотрекер - совершенно разные коды и таблицы. не забывайте, если пробуете поставить друг на друга.

Да, спасибо большое, после ночи в дебаггере я разобрался. Жаль только, что это не было написано в первом сообщении.

Цитата(4e4ako @ 23.9.2009, 11:28) *
З.ы. если вы не смогли запустить этот код - поставьте ретрекер от т.ру и не мучайтесь (и вам нервы целее - и автору этого кода)

Уже запустил, и уже отказался. Кода не много, ночи на разборки хватило. Кстати, я так и не понял, что мешает сделать два исправления -- не требовать наличие нестандартных параметров. Кроме того, ретрекер от т.ру (как я подозреваю и псевдотрекер), поддерживают технологию bep22, которая изумительно работает. Жаль только в utorrent не включена по умолчанию. Достаточно было добавить строку в днс, и utorrent с включенным bep22 тут же полез на ретрекер. Сказка.
chmv
Думаю это последнее мое сообщение здесь, все проблемы с ретрекерами в своих сетях мы решили. Пишу я его только с одной целью. Вдруг Вы задумаетесь.

Цитата(FreeM@N @ 23.9.2009, 8:21) *
Конечно smile.gif Он же работает.

Да. По стандарту, который был придуман здесь, нигде не описан, при полном игнорировании уже существующего и работающего стандарта, а тажке планируемого (bep22). Именно так убиваются хорошие идеи.

Цитата(FreeM@N @ 23.9.2009, 8:21) *
Я ещё раз повторяю если вы это не прочитали ранее - это не ретрекер, это "статистический ретрекер", использовать его как ретрекер крайне не рекомендуестся из-за наличия ненужных для обычного ретрекера функций!

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

Цитата(FreeM@N @ 23.9.2009, 8:21) *
Там так-то аяксовый запрос идёт на заполнение. HTML+JS не сбрасывайте со стчетов...
Код
<select name="city" id="city" onchange="$('#isp').load('resume.php?city='+$('#city').val());">

Так что заполять его заранее абсолюно бессмысленно.


Начнем с того, что там (в resume.php) написано (я же написал об этом! в том же сообщении!):
Код
<select name="city" id="city" onchange="$('#isp').load('torrents.php?isp_list='+$('#city').val());">

Вы видите "torrents.php" в этой строке? Как-то не логично из resume.php делать переадресацию на torrents.php после выбора провайдера. Как Вы можете утверждать, что он работает, когда в коде банальные описки есть?! Вы, лично Вы, своим комментарием "Ну вообще последняя всегда рабочая" подвигли меня на разбор кода и поиск моих ошибок. К сожалению, были найдены только ошибки автора.

Ну и JS там тоже не сработал. Может Вы хоть раз попробуете сами посмотреть, что код находится в репозитарии, и прекратите голословно утверждать о работоспособности кода, который в реальности не работает?

Цитата(FreeM@N @ 23.9.2009, 8:21) *
Хреновый топор у вас...ретрекер - это единое целое, а едином целом нормально когда одни кусочки программы используют другие.

"Хреновый топор"... Я ничего не говорил о профессиональных способностях ни Вас, ни автора. Вы открыли мне право ответить Вам тем же.

Цитата(FreeM@N @ 23.9.2009, 8:21) *
Если ещё не поняли - так и было задумано.

Было задумано, чтобы ничего не работало. Ни одна из функций этого кода не заработала с первого раза. Везде пришлось либо топором либо напильником.

Еще пример банальных ошибок? Пожалуйста, это не сложно, код изобилует ими.

trackerslist.php. Ошибка первая.
Код
    get_trackers();
    $list = $cache->get("trackers_list");


Но функция get_trackers() возвращает результат двумя методами:
Метод 1:
Код
    return $trackers;

Этот метод работает всегда, им и надо было пользоваться.

Метод 2:
Код
    $cache->set('new_trackers', $trackers, TRACKERS_CACHE_EXPIRE);


А где же автор берет результат:
Код
    $list = $cache->get("trackers_list");

Удивительно! Ни в одном из этих двух. Кстати, никто не забыл, что кэш вообще может быть отключен? Пожалуйста вот код подтверждающий это:
Код
$cfg['cache_type'] = 'filecache'; // Available cache types: none, APC, memcached, sqlite, filecache

Тут четко написано, что none является допустимым типом кэша.

trackerslist.php. Ошибка вторая.
Код
die($list);

Это даже не смешно. $list это массив. Бессмысленно передавать его как параметр для выхода. О применении die в последней строке кода -- отдельная тема, здесь хоть какие-то аргументы можно выдумать в пользу этого метода завершения.

Цитата(FreeM@N @ 23.9.2009, 8:21) *
а кусочек кода:
Код
foreach ($sql_data as $column => $value)
{
    $columns[] = $column;
    $values[] = "'" . $db->escape($value) . "'";
}

вы не удалили случаем? после обработки в базу вместо null уходит '' (две одинарные кавычки, а между ними пусто).

Нет, я не удалял ничего. Конкретно эта ошика была исправлена методом добавления нужного кода.
Хороший пример Вы привели. Это еще одна ошибка. Нельзя в sql использовать '' для чисел! Число нужно указывать, или ничего не указывать вообще, тогда возьмется 0 прописанный в свойствах поля таблицы. Потому если size не был определен, то вываливается с ошибкой mysql. Как и city, кстати, это ведь тоже число.
Приведенный выше код работает только для строк, но не для чисел.

Цитата(FreeM@N @ 23.9.2009, 8:21) *
Поробуйте выполнить вот такой SQL:
....
А так да, вы правы, лучше будет заранее выставить 0.

Выше я написал, где именно ошика. И я не говорил "лучше". Это необходимо. Либо не указывать тот же size в запросе, тогда возьмется 0 из свойств поля таблицы, либо if (!$size) $size = 0; . Других вариантов нет. Число не может быть задано как '' в SQL.

Цитата(FreeM@N @ 23.9.2009, 8:21) *
Продолжайте комментировать код, это полезно smile.gif

Полезно кому? На начальном этапе я думал предложить свою помощь. Однако теперь мне это не интересно. Простите, но я не могу себе позволить работать с людьми, которые могут себе позволить голосновно утверждать что либо.
FreeM@N
>>>>
Пишу я его только с одной целью. Вдруг Вы задумаетесь.
<<<<
Жаль вы не можете "прочитать" всю конечную идею данного проекта (касательно кода), кторая к сожалению пока только у меня в мыслях...

>>>>
Да. По стандарту, который был придуман здесь, нигде не описан
<<<<
Точно, меня это тоже расстраивает. Но я (также как и вы между прочим) присоединился к проекту абсолютно без всяких описаний и т.д., а просто потому что нашёл в исходниках места, которые некорректно были описаны (опять совпадение, ага?)...да вот только я не стал кричать - "Ааа, всё гавно, ничего не работает" и тому подобные вещи, а просто связялся с автором (RoadTrain тогда начинал всё) и мы тихо мирно и без криков и обвинений договорились что будем развивать проект вместе. Сложно? Нет! (вот тут и расхождение собсно).

Ну ладно, пойдём дальше...
>>>>
Начнем с того, что там (в resume.php) написано (я же написал об этом! в том же сообщении!):
Код
<select name="city" id="city" onchange="$('#isp').load('torrents.php?isp_list='+$('#city').val());">

Вы видите "torrents.php" в этой строке? Как-то не логично из resume.php делать переадресацию на torrents.php после выбора провайдера.
<<<<
Там не переадресация, а AJAX запрос.
И да, в resume.php данные берутся именно из torrents.php я просто скопировал ваше сообщение и объяснил смысл конструкции, а вы снова придрались даже не подумав, вы пробовали вызвать torrents.php? Видели что там возвращается? Посмотрите ещё раз, может всё-таки поймёте...

>>>>
Ну и JS там тоже не сработал. Может Вы хоть раз попробуете сами посмотреть, что код находится в репозитарии, и прекратите голословно утверждать о работоспособности кода, который в реальности не работает?
<<<<
Насчёт JS не знаю, возможно пора обновить jQuery...Тот код который в репозитории - установлен и на этом сайте и он работает. Но его мало кто может запустить из-за отсутствия документации. Хотите реально помочь? Я могу вам объяснить как и что работает (голосом), а вы напишете доку - как такой вариант?

>>>>
"Хреновый топор"... Я ничего не говорил о профессиональных способностях ни Вас, ни автора.
<<<<
Да я вобщем-то тоже ничего не говорил о профессиональных способностях, просто вы упомянули топор - ну и я его упомянул...Если вас это обидело - прошу прощения, без задней мысли так сказать...

>>>>
trackerslist.php. Ошибка первая.
Код
get_trackers();
$list = $cache->get("trackers_list");

<<<<
О! Точно, а чего так жестко? Писал перед отпуском, торопился, видимо изначално что-то другое хотел сделать но передумал...

>>>>
А где же автор берет результат:
Код
$list = $cache->get("trackers_list");

<<<<
Не, ну правильно, вы же мысли читать не умеете (это никоим образом не оскорбление, просто мысли). Я в будущем хочу удалить поддержку ini-файла совсем, пока что сделал переходный вариант.
В get_trackers(); есть строчка
Код
$cache->set('trackers_list', $out, TRACKERS_CACHE_EXPIRE);

Вот оттуда и берётся. Но это вариант только для БД, а он пока ещё не завершён и работает только на этом сайте (базы-то ниукого нету, а экспорт я ещё не сделал)

>>>>
Удивительно! Ни в одном из этих двух. Кстати, никто не забыл, что кэш вообще может быть отключен? Пожалуйста вот код подтверждающий это:
Код
$cfg['cache_type'] = 'filecache'; // Available cache types: none, APC, memcached, sqlite, filecache

<<<<
Не забыли, после запуска в эксплутацию было решено оставить только memcached, но это только было решено, в коде ничего не менялось, поддержа других типов кеша так и не была убрана.

>>>>
trackerslist.php. Ошибка вторая.
Код
die($list);

Это даже не смешно. $list это массив.
<<<<
$list это текст и никак иначе (присмотритесь повнимательнее), из-за переходного состояния у всех дожно выдавать пустой файл.

>>>>
Нельзя в sql использовать '' для чисел
<<<<
А кто спорит? 100% нельзя - полностью согласен, к сожалению эту часть кода писал не я и просто изложил вам мысль как это было придумано автором, видимо зря.
А ещё есть охренительные проблемы с кодировками (ну это так, на всякий случай написал), как решить - придумал, но писать пока что некогда.

>>>>
Полезно кому?
<<<<
Коду, ну и всем наверное тоже.

>>>>
Однако теперь мне это не интересно.
<<<<
И если вдруг будет интересно - пишите в аську или скайп (freemandigger), а то на форуме раз в день да через день...не продуктивно.

>>>>
Простите, но я не могу себе позволить работать с людьми, которые могут себе позволить голосновно утверждать что либо.
<<<<
Прощаю, а утверждаю я не голословно, я ещё раз повторю - это всё работает на данном сайте!

А теперь разберём моё утверждение - я где-то написал что "это" будет работать у вас? Нет! Я на 99% уверен что у других это работать не будет. Но это только пока, вот на такой стадии проект находится что у других работать не будет, но я хочу чтобы работал у любого, и стараюсь идти к этой цели, может медленно, но верно.
А данный сайт служит своебразной демонстрацией того как всё будет выглядеть когда будет закончено и когда будет работать у любого желающего, даже технически не особо подкованного.
FreeM@N
Обновление: ревизия 73.
Удалены кеши, использование которых нецелесообразно (все кроме memcached). Планируется добавить Xcache, но есть сомнения хватит ли shm, возможно будет только частично.
Удалена поддержка ini файла ретрекеров и полностью произведена замена на БД.
Поправлены ошибки в MySQL запросах (спасибо chmv).
Реализован экспорт списка ретрекеров в SQL формат для последующего обновления пользовательских баз. Для этого нужно открыть _хттп://re-tracker.ru/trackerslist.php?export и сохранить как sql файл, после чего импортировать его в вашу БД. Пока что в ручном режиме, позже будет сделано автообновление.

xmanpsk
Поставил ревизию 73, работает без memcached, смысла пока нет, нагрузка смешная.
Патчер в сети не используем, договариваемся с трекерами об автоматическом прописывании ретрекера.
Сорри если вопрос дебильный, но при таком раскладе возможно ли заставить его выводить названия раздач с торрентсру в статистике? Крон из примера в теме запускать пробовал, безрезультатно - в БД ничего не добавилось нового. Допиваю третью бутылку пива, ситуация не прояснилась smile.gif
FreeM@N
Цитата(xmanpsk @ 27.9.2009, 19:37) *
Поставил ревизию 73

Есть 74-я - там исправлен небольшой косяк в экспорте списка ретрекеров, но если вы не пользуетесь экспортом то можно и не обновлять...


Цитата(xmanpsk @ 27.9.2009, 19:37) *
работает без memcached, смысла пока нет, нагрузка смешная.

Если пиров мало то можно и без кеша, но при увеличении пиров без кеша не выжить...


Цитата(xmanpsk @ 27.9.2009, 19:37) *
Сорри если вопрос дебильный, но при таком раскладе возможно ли заставить его выводить названия раздач с торрентсру в статистике?

К сожалению - нет.
Для того чтобы "вытащить" название нужно чтобы был передан комментарий к раздаче (там обычно ссылка на тему), а он получается только через патчер...
POWExR
http://www.whitsoftdev.com/opentracker

Это может претендовать на Re-Tracker ?
Пробовал установить работает )
FreeM@N
Может, у некоторых он и установлен.
botanov
Error: Memcached extension not installed

как убрать этот Memcached ?
FreeM@N
Его вообще-то не убрать, а установить нужно...
Но если хочется без него то в конфиге измените параметр:
Код
// Cache
$cfg['cache_type'] = 'none'; // Available cache types: none, memcached

Желательно создать файл config.local.php и в нем переопределять переменные из секции $cfg.
nkk
Видимо, я не достаточно ознакомился с данной темой и настрочил флуда...
FreeM@N, спасибо за ссылку.

ПС. То, что у меня получилось - gpk . org . ua / qbt / look . php
FreeM@N
это к чему? у нас и так в статистике показывается имя и ссылка откуда можно скачать? а также сколько сейчас пользователей учавствуют в обмене...Также если имя определить невозможно но предлагается ссылочки на гугл и isohunt для поиска по хешу...

А насиловать мускул такими запросами...он и поломаться может.

П.С.: Вы статистику-то смотрели, нет? вот ссылочка: http://re-tracker.ru/torrents.php
Name
Вопрос: это просто статистика или рабочий ретрекер??
FreeM@N
Только статистика, как ретрекер его использовать крайне не рекомендуется.
spawnkhv
Блина =( люди добрые помогите поставить эту Прекрасную вещь! (пошагово плизз)
Уже все перебробывал cray.gif
FreeM@N
Вы точно хотите поставить именно эту статистику? Она не будет ничего показывать если патчер не добавит для неё сециальные данные, но он добавляет их только для ретрекера re-tracker.ru...
vlad49
Есть глупый вопрос - это полноценный ретрекер, или он только ведет статистику?

Удалил xbtt, и поставил его, а также автопатчер с nag.ru, который незаметно добавляет в каждый торрент, скачиваемый пользователями, адрес ретрекера с данными name, size и т.п. После двух дней работы в статистике (torrents.php) появилась куча торрентов с описаниями. Выбрал тот, на котором было больше всего сидеров, скачал и добавил в клиента, предварительно удалив из него адрес оригального трекера. Так вот, он почему-то начал качать данные с инета, откуда-то взяв кучу инетовских IP (!), а местных сидеров так и не нашел. В случае с XBTT все было наоборот, работало как надо. Более того, порылся в базе данных в поисках info_hash этого торрента - его там не было, только в таблице tracker_stats. Загадка - где он тогда вообще хранит местных сидов?

Хотелось бы просто иметь ретрекер типа XBTT, но с расширенной статистикой - какие в локалке есть торренты, их название и количество сидеров/личеров на каждый. Что нужно ставить чтобы добиться этого? Не прописывать же в каждый торрент еще по два адреса (xbt и этот).
FreeM@N
это не ретрекер, это "статистический ретрекер", использовать его как ретрекер крайне не рекомендуестся
vlad49
Цитата(FreeM@N @ 25.11.2009, 19:40) *
это не ретрекер, это "статистический ретрекер", использовать его как ретрекер крайне не рекомендуестся

А как тогда добиться совместной работы этого ретрекера и xbtt? Пихать во все торренты по два новых адреса?
Dyr
Есть предложение по небольшому исправлению/добавлению ретрекера. Diff нашего ретрекера: http://www.pastie.org/720024

- Разделить регистрацию и показ "пустых" (то есть без размера,комментария и имени) торрентов по переменным "register_empty" и "show_empty"
- Magnet-ссылки для всех торрентов с href у хеша, а не у размера
Ну и уменьшить таймаут между поисками, пожалуй.

Посмотреть, как это выглядит в результате, можно на retracker.smarthome.spb.ru
FreeM@N
Про magnet - да.
А вот про разделение поподробнее пожалуйста - зачем их регистрировать если они нигде не будут показываться?

Таймаут можно уменьшать в настройках. У нас, к сожалению, не шибко мощный сервер и чаще он "неосилит". (Все желающие помочь материально - могут нажать на кнопку Donate в шапке и поделиться средствами)
FreeM@N
Сделал Magnet-ссылки и пошаманил с подсчётом страниц, рассчитываются как и раньше - без ограничений...вроде работает.

Magnet-ссылки кто-нибудь протестируйте пожалуйста.

Также добавлен поиск по хешу.

Позже сделаю апдейт исходников.
NiTr0
Цитата(FreeM@N @ 25.11.2009, 18:40) *
это не ретрекер, это "статистический ретрекер", использовать его как ретрекер крайне не рекомендуестся

Почему же - у меня работает, только что проверил... Только с memcached проблемы могут возникать - хотя утверждать не буду.
FreeM@N
Ну да, но лучше всё же использовать для этой цели специализированные движки трекеров. С memcache лучше - без него как раз больше проблем будет.

P.S. Обновил исходники.
ctlan
установил кэшем sqlite
при запуске статистики получаю :
Fatal error: Cannot access protected property sqlite_common::$dbh in /var/www/retracker/re_tracker/www.2/cache.class.php on line 209

кто чем может помочь ?
FreeM@N
Кеш в sqlite не поддерживается:
Цитата
// Available cache types: none, memcached
MiB
небольшой патч:
Код
129a130,132
>     $row = $db->fetch_row("SELECT COUNT(DISTINCT(ts.torrent_id)) AS count FROM tracker_stats ts WHERE (ts.seeders > 0 AND ts.leechers > 0) LIMIT 1");
>     $torrents_act = (int) $row['count'];
>
132c135,136
<         'torrents_num' => $torrents_num
---
>         'torrents_num' => $torrents_num,
>         'torrents_act' => $torrents_act
137c141,142
> echo "Всего пиров: <b>{$stats['peers_num']}</b>, всего торрентов: <b>{$stats['torrents_num']}</b>, из них активных: <b>{$stats['torrents_act']}</b><br />\n";
204c209
< if($active)      { $where[] = "(ts.seeders > 0 OR ts.leechers > 0)";}
---
> if($active)      { $where[] = "(ts.seeders > 0 AND ts.leechers > 0)";}
278c283
<                         <label><input type="checkbox"  name="a"  value="1" <?=($active) ? 'checked="checked"' : '';?> />&nbsp;Активные (есть seeder или leecher)&nbsp;</label>
---
>                         <label><input type="checkbox"  name="a"  value="1" <?=($active) ? 'checked="checked"' : '';?> />&nbsp;Активные (есть seeder и leecher)&nbsp;</label>


Принимаем что "Активные" торенты это те где есть и сидеры и личеры.
соответвенно ищем по этому запросу и выводим количество таких торрентов в статистике.

diff в UTF-8: Нажмите для просмотра прикрепленного файла
FreeM@N
Цитата(MiB @ 17.1.2010, 12:13) *
Принимаем что "Активные" торенты это те где есть и сидеры и личеры.

Подумайте ещё раз smile.gif
По вашему алгоритму получается что если на торенте 100 сидеров и 0 личеров то он не активный? По-моему это не так...

А чем не устраивает текущая выборка?
MiB
Цитата(FreeM@N @ 18.1.2010, 1:39) *
Подумайте ещё раз smile.gif
По вашему алгоритму получается что если на торенте 100 сидеров и 0 личеров то он не активный? По-моему это не так...

А чем не устраивает текущая выборка?


по моему мнению "активные" это те по которым трафик между пользователями нашей сети идет в настоящее время.
сделано это было просто для отслеживания эффективности ретрекера.

а то что 100 человек скачало и теперь раздает - это не активные, а популярные.
то есть выборка по сидерам или личерам , с сортировкой по убыванию - вот тебе и самые популярные.

P.S. все конечно только IMHO. (хотя уже у 2х провайдеров где стоит данная система(кроме нас) увидел свой патч smile.gif)
P.P.S. я не против когда ко мне на ТЫ. как-то удобнее в неоффициальном, письменном общении на форумах. да и привычнее.
P.P.P.S сейчас разберемся с виртуализацией пары серверов и накатаю еще один патч в части статистики. побольше, а то надоело лазить в phpmyadmin чтобы то одно псомотреть, то другое.
FreeM@N
Цитата
а то что 100 человек скачало и теперь раздает - это не активные, а популярные.

Да, действительно. Можно добавить ещё один параметр - популярные smile.gif
Добавлю в следующем обновлении.

Цитата
сейчас разберемся с виртуализацией пары серверов и накатаю еще один патч в части статистики.

Давайте.

P.S.: Всё просто - вас много, а я один, чтобы никого не обидеть обращаюсь ко всем на Вы (ну может не всегда с большой буквы - нужно русский подучить smile.gif).
MiB
как и обещал патчик немного побольше:
- кометические правки;
- статистика перенесена сверху старницы вниз, и оформлена в стиле старницы;
- в статистику добавил количество пользователей;
- если в директории есть файл header.html то он выводится вверху страницы в iframe высотой 100px и шириной 100%;
- последняя строчка - это так, мое суперэго.... smile.gif;

torrents.php.r80.diff
FreeM@N
Цитата(MiB @ 31.1.2010, 16:01) *
...
- в статистику добавил количество пользователей;
...


Собственно вот таких SELECT COUNT DISTINCT и хотелось бы избежать...шибко грузят sad.gif

По поводу активных выше уже написано...пока что нет времени, но когда появится будет большое обновление smile.gif
MiB
Цитата(FreeM@N @ 1.2.2010, 0:41) *
Собственно вот таких SELECT COUNT DISTINCT и хотелось бы избежать...шибко грузят sad.gif

это понятно, но мою спицифику я тебе описывал, а мне такие данные как раз нужны.
Цитата
По поводу активных выше уже написано...пока что нет времени, но когда появится будет большое обновление smile.gif


это гут. правда придется думать как мне потом свои патчи сверху накатывать smile.gif)
n_zheka
Мужики, помогите решить проблему с comment в статистике.
FreeM@Nу тоже в личку отписал, не знаю кто быстрей ответит.
Проблема заключается в следующем.
В базу не заносится comment т.е ссылка на раздачу на внешнем трекере.
В config.php переменная $cfg['skip_empty'] = false;
В принципе думаю это не особо важно т.к раздача выкачана полностью.
В таблице поле comment пустое
mysql> select * from tracker_stats;
+------------+------------------------------------------+---------+----------+------------+-------------+------+------+---------+------------+
| torrent_id | info_hash | seeders | leechers | reg_time | update_time | name | size | comment | last_check |
+------------+------------------------------------------+---------+----------+------------+-------------+------+------+---------+------------+
| 1 | 161401888924d83ffa719b2c24d3d440d2cdc9a1 | 1 | 0 | 1265028811 | 1265028811 | | 0 | | 0 |
+------------+------------------------------------------+---------+----------+------------+-------------+------+------+---------+------------+
1 row in set (0.00 sec)
В самом торрент файле в поле коммент ссылка присутствует.
Нажмите для просмотра прикрепленного файла
Где трабла?
и вторая проблема, допустим если я в базе все таки инсертил поле коммент вручную при обновлении данных пишет
Could not obtain torrent name from url (tracker is down or not supported)
Первоочередная задача это конечно-же решить проблемы с добавлением в базу comment.
FreeM@N
Комментарий ретрекером берётся не из торента, а из announce URL-а.
В announce URL он попадает с помощью патчера, который переносит комментарий из торрента в урл.
n_zheka
Прошу прощение, а можно по действиям, ретркер установлен из http://code.google.com/p/re-tracker/source/checkout
Установлен на Linux
далее какие мои действия, что ставить и куда?
желательно со ссылками, чтобы все заработало как надо.
Еще раз прошу прощение, буду очень благодарен за помощь, раньше думал что коммент появляется get запросом.

UPD:
Смотрю этот вопрос рассматривался тут http://re-tracker.ru/index.php?showtopic=410
но решения проблемы не было, как сделать чтобы на моей локальной статистике заполнялись необходимые поля в том числе коммент?
Опять же просьба пошагово, спасибо.
FreeM@N
Там был и ответ:
Цитата
Покопавшись понял, что нужен определенный запрос к announce.php, вида ?name-...&size=...&comment=..., для создания которого в частности нужен патчер, без патчера не покажется имя и прочее, но патчер настроен это генерировать только под вашу статистику...
n_zheka
Спасибо.
Так, идем далее, подскажи пожалуйста куда именно патчер ставится, и каков алгоритм его работы.
Может я не совсем так понял, патчеры устанавливаются на сам трекер который в торрент фаил добавляет аннонсер retracker.local, но некоторые торренты и так по дефолту суют этот аннонсер. Теперь вообще запутался smile.gif
Наверно я не совсем ясно написал какова моя задача.
Задача просто локальный ретрекер со статистикой чтобы юзеры искали локальные пиры.
Это я добился самим анонсером. Теперь осталась только одна задача чтобы имена нормально отображались в локальной статистике.
FreeM@N
Патчер вот из этого раздела: http://re-tracker.ru/index.php?showforum=9
Но, как написано выше, некоторые патчеры добавляют статистику только к адресу re-tracker.ru (конкретно какие не знаю т.к. не пользуюсь).

Патчер должен быть установлен у клиента и должен обрабатывать все торенты которые он качает. К серверу он непосредственного отношения не имеет.
derSpinner
Вопрос: как данные исходники можно прикрутить к себе на сервер, что бы иметь статистику и подобную систему у себя.
Но только для torrents.ru и не касаясь так или иначе re-tracker.ru
access
Почему я не могу скачать файл?
FreeM@N
Если вам нужны исходники вы можете взять их с гугла: http://code.google.com/p/re-tracker/
FIGO
При добавлении в трекера в торрент файл выходит ошибка: Трекер отправляет неверные данные: <NULL>. В чем может быть проблема подскажите пожалуйста, сама статистика работает
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2017 IPS, Inc.