From 73554a2443ab659f3e9a34693d6df43a2ea658cc Mon Sep 17 00:00:00 2001 From: xiaomlove Date: Wed, 27 Apr 2022 15:29:06 +0800 Subject: [PATCH] improve peer count update --- app/Repositories/TrackerRepository.php | 3 ++- include/constants.php | 4 ++-- public/torrents.php | 2 +- public/viewpeerlist.php | 12 +++++++++++- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/Repositories/TrackerRepository.php b/app/Repositories/TrackerRepository.php index 5fdab38c..cdc77cc6 100644 --- a/app/Repositories/TrackerRepository.php +++ b/app/Repositories/TrackerRepository.php @@ -758,11 +758,12 @@ class TrackerRepository extends BaseRepository * * @param Torrent $torrent * @param $queries + * @param Peer $peer * @param bool $isPeerExists */ private function updateTorrent(Torrent $torrent, $queries, bool $isPeerExists) { - if (!empty($queries['event'])) { + if (!empty($queries['event']) || !$isPeerExists) { $torrent->seeders = Peer::query() ->where('torrent', $torrent->id) ->where('to_go', '=',0) diff --git a/include/constants.php b/include/constants.php index 8412ab92..1e62e0db 100644 --- a/include/constants.php +++ b/include/constants.php @@ -1,6 +1,6 @@ get_page()){ echo $Cache->next_row(); if ($tagKeyById->isNotEmpty()) { - echo '' . $tagRep->renderSpan($tagKeyById, $renderKeyArr, true) . ''; + echo '' . $tagRep->renderSpan($tagKeyById, $renderKeyArr, true) . ''; } ?> diff --git a/public/viewpeerlist.php b/public/viewpeerlist.php index c531cc32..620e37e2 100644 --- a/public/viewpeerlist.php +++ b/public/viewpeerlist.php @@ -93,6 +93,7 @@ function dltable($name, $arr, $torrent) } $downloaders = array(); $seeders = array(); + $torrent = \App\Models\Torrent::query()->findOrFail($id, ['id', 'seeders', 'leechers']); $subres = sql_query("SELECT seeder, finishedat, downloadoffset, uploadoffset, ip, ipv4, ipv6, port, uploaded, downloaded, to_go, UNIX_TIMESTAMP(started) AS st, connectable, agent, peer_id, UNIX_TIMESTAMP(last_action) AS la, userid FROM peers WHERE torrent = $id") or sqlerr(); while ($subrow = mysql_fetch_array($subres)) { if ($subrow["seeder"] == "yes") @@ -100,7 +101,16 @@ function dltable($name, $arr, $torrent) else $downloaders[] = $subrow; } - + $seedersCount = count($seeders); + $leechersCount = count($downloaders); + if ($torrent->seeders != $seedersCount || $torrent->leechers != $leechersCount) { + $update = [ + 'seeders' => $seedersCount, + 'leechers' => $leechersCount, + ]; + $torrent->update($update); + do_log("[UPDATE_TORRENT_SEEDERS_LEECHERS], torrent: $id, original: " . $torrent->toJson() . ", update: " . json_encode($update)); + } function leech_sort($a,$b) { $x = $a["to_go"]; $y = $b["to_go"];