исправлено Недостача сидбонусов

Exile

Администратор
Lynx вообще источник проблемы почти наверняка в том, что на момент выполнения задачи не все раздачи на трекере числятся за пользователем как активные. Особого варианта решения среди разработчиков никто не предложил, кроме традиционного выкрика что "текущая система сидбонусов гавно", поэтому был бы рад услышать предложения по более корректному выполнению этой самой задачи. Авось и Basilevs, DarkMod, dimka3210, DreamHD, JDVU, Lektor, Nightmare, PheRum, Softwarez, Sprinx, Zenden присоединятся к обсуждению, как бы сделать так, чтобы сидбонусы начислялись правильно. Лично у меня пока всего один вариант - переложить эту обязанность напрямую на анонсер.
 

Virtuoz

Пользователь
Lynx вообще источник проблемы почти наверняка в том, что на момент выполнения задачи не все раздачи на трекере числятся за пользователем как активные. Особого варианта решения среди разработчиков никто не предложил, кроме традиционного выкрика что "текущая система сидбонусов гавно", поэтому был бы рад услышать предложения по более корректному выполнению этой самой задачи. Авось и Basilevs, DarkMod, dimka3210, DreamHD, JDVU, Lektor, Nightmare, PheRum, Softwarez, Sprinx, Zenden присоединятся к обсуждению, как бы сделать так, чтобы сидбонусы начислялись правильно. Лично у меня пока всего один вариант - переложить эту обязанность напрямую на анонсер.
Извиняюсь за офф топ! Но почему со всего списка модераторов и разработчиков фигурируют на форуме всего несколько человек и то которые отвечают за свои модификации или же при вопросе который не поднимался при ответе некоторые из себя строют не понять что.
 

Zenden

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

Virtuoz

Пользователь
Virtuoz лет пять уже повелось что часть из разработчиков только в чате Skype активна.
А почему эту активность не сделать на форуме? У меня есть вопросы без ответов, да и не только у меня, сам конечно до пру как сделать но все же есть желание увидеть ответ более знающего человека.
 

Exile

Администратор
Zenden аналогично через крон-задачу. Ну вот как вариант оба анонсера дополнительно заставить считать и бонусы, тут правда возникает вопрос о расчете суммы ежечасных бонусов сразу.
 

Zenden

Пользователь
Создать таблицу в котору анонсер будет заносить информацию, и по крону раз в час её обрабатывать с последующем затиранием данных, чтоб она не разрасталась. Как то так
 

Sprinx

Пользователь
Сделать еще одно поле в bb_bt_torrents и анонсом заносить последнее время коннекта.
Исходя из этих данных, можно будет определить, точное количество раздач.
 

Nightmare

Легенда
или же при вопросе который не поднимался при ответе некоторые из себя строют не понять что.
Ну так вы давайте конкретнее с фактами - кто, где и как? Будем проводить профилактические беседы.
Но я бы тут упомянул такую поговорку "Каков вопрос - таков ответ". В большинстве случаев люди банально ленятся поискать на форуме информацию, которой навалом, при этом же "строят из себя не пойми кого" думая, что им обязаны поискать за них, найти решение, и все сделать в за них. Тут вот люди не могут html тег написать, а уже свой трекер им подавай.

Аннонсер это часть движка, которая воспринимает на себя основную нагрузку, поэтому вносить что-то в него не очень хорошая идея изначально. Эта часть движка должна быть легкой и быстрой. Возможно тут стоит пересмотреть структуру таблиц базы данных и внести изменения, которые позволят адекватно считать статистику (так же используя крон задачи) без глобальных изменений в аннонсере.
 

sхс

Легенда
Особого варианта решения среди разработчиков никто не предложил
Предлагаю такое решение:
Перед
PHP:
foreach($seed_bonus as $i => $points)
Добавляем
PHP:
    $sql = "SELECT last_run
        FROM " . BB_CRON . "
        WHERE cron_script = 'tr_seed_bonus.php'
        LIMIT 1";

    $cron_runs = DB()->fetch_row($sql);
    $cron_job_last_run = TIMENOW-strtotime($cron_runs['last_run']); // сколько сек прошло с прошлого запуска задачи

заменяем
PHP:
$user_points = ((float)$points / 4);
на
PHP:
$user_points = (float)$points*($cron_job_last_run/3600); // сколько сидбонусов заработали за эти секи

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

Я года три назад изменил период запуска задачи с 15 минут на 5 минут, а вот про четверку в коде забыл. И никто не жаловался из юзеров, потому что бонусов капало больше чем в таблице
 
Сверху