diff --git a/app/Console/Commands/Test.php b/app/Console/Commands/Test.php index ecba4594..99b903d7 100644 --- a/app/Console/Commands/Test.php +++ b/app/Console/Commands/Test.php @@ -95,8 +95,7 @@ class Test extends Command */ public function handle() { - $rep = new WorkRepository(); - $rep->settleRole(2, null, true); + } } diff --git a/app/Jobs/UpdateTorrentSeedersEtc.php b/app/Jobs/UpdateTorrentSeedersEtc.php index fecdd24d..781e1126 100644 --- a/app/Jobs/UpdateTorrentSeedersEtc.php +++ b/app/Jobs/UpdateTorrentSeedersEtc.php @@ -53,14 +53,47 @@ class UpdateTorrentSeedersEtc implements ShouldQueue { $beginTimestamp = time(); $logPrefix = sprintf("[CLEANUP_CLI_UPDATE_TORRENT_SEEDERS_ETC], commonRequestId: %s, beginTorrentId: %s, endTorrentId: %s", $this->requestId, $this->beginTorrentId, $this->endTorrentId); - $sql = sprintf("update torrents set seeders = (select count(*) from peers where torrent = torrents.id and seeder = 'yes'), leechers = (select count(*) from peers where torrent = torrents.id and seeder = 'no'), comments = (select count(*) from comments where torrent = torrents.id) where id > %s and id <= %s", - $this->beginTorrentId, $this->endTorrentId - ); - $result = NexusDB::statement($sql); +// $sql = sprintf("update torrents set seeders = (select count(*) from peers where torrent = torrents.id and seeder = 'yes'), leechers = (select count(*) from peers where torrent = torrents.id and seeder = 'no'), comments = (select count(*) from comments where torrent = torrents.id) where id > %s and id <= %s", +// $this->beginTorrentId, $this->endTorrentId +// ); +// $result = NexusDB::statement($sql); + + $torrents = NexusDB::table('torrents') + ->where('id', '>', $this->beginTorrentId) + ->where('id', '<=', $this->endTorrentId) + ->get(['id']) + ; + foreach ($torrents as $torrent) { + $peerResult = NexusDB::table('peers') + ->where('torrent', $torrent->id) + ->selectRaw("count(*) as count, seeder") + ->groupBy('seeder') + ->get() + ; + $commentResult = NexusDB::table('comments') + ->where('torrent', $torrent->id) + ->selectRaw("count(*) as count") + ->first() + ; + $update = [ + 'comments' => $commentResult && $commentResult->count !== null ? $commentResult->count : 0, + 'seeders' => 0, + 'leechers' => 0, + ]; + foreach ($peerResult as $item) { + if ($item->seeder == 'yes') { + $update['seeders'] = $item->count; + } elseif ($item->seeder == 'no') { + $update['leechers'] = $item->count; + } + } + NexusDB::table('torrents')->where('id', $torrent->id)->update($update); + do_log("$logPrefix, [SUCCESS]: $torrent->id => " . json_encode($update)); + } $costTime = time() - $beginTimestamp; do_log(sprintf( - "$logPrefix, [DONE], sql: %s, result: %s, cost time: %s seconds", - preg_replace('/[\r\n\t]+/', ' ', $sql), var_export($result, true), $costTime + "$logPrefix, [DONE], update torrent count: %s, cost time: %s seconds", + count($torrents), $costTime )); } } diff --git a/app/Jobs/UpdateUserSeedingLeechingTime.php b/app/Jobs/UpdateUserSeedingLeechingTime.php index ea5a8b14..3bc49840 100644 --- a/app/Jobs/UpdateUserSeedingLeechingTime.php +++ b/app/Jobs/UpdateUserSeedingLeechingTime.php @@ -3,6 +3,7 @@ namespace App\Jobs; use App\Models\Setting; +use Carbon\Carbon; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Contracts\Queue\ShouldQueue; @@ -52,12 +53,39 @@ class UpdateUserSeedingLeechingTime implements ShouldQueue { $beginTimestamp = time(); $logPrefix = sprintf("[CLEANUP_CLI_UPDATE_SEEDING_LEECHING_TIME], commonRequestId: %s, beginUid: %s, endUid: %s", $this->requestId, $this->beginUid, $this->endUid); - $sql = sprintf( - "update users set seedtime = (select sum(seedtime) from snatched where userid = users.id), leechtime=(select sum(leechtime) from snatched where userid = users.id), seed_time_updated_at = '%s' where id > %s and id <= %s and status = 'confirmed' and enabled = 'yes'", - now()->toDateTimeString(), $this->beginUid, $this->endUid - ); - $results = NexusDB::statement($sql); +// $sql = sprintf( +// "update users set seedtime = (select sum(seedtime) from snatched where userid = users.id), leechtime=(select sum(leechtime) from snatched where userid = users.id), seed_time_updated_at = '%s' where id > %s and id <= %s and status = 'confirmed' and enabled = 'yes'", +// now()->toDateTimeString(), $this->beginUid, $this->endUid +// ); +// $results = NexusDB::statement($sql); + + $users = NexusDB::table('users') + ->where('id', '>', $this->beginUid) + ->where('id', '<=', $this->endUid) + ->where('status', 'confirmed') + ->where('enabled', 'yes') + ->get(['id']) + ; + $count = 0; + foreach ($users as $user) { + $sumInfo = NexusDB::table('snatched') + ->selectRaw('sum(seedtime) as seedtime_sum, sum(leechtime) as leechtime_sum') + ->where('userid', $user->id) + ->first(); + if ($sumInfo && $sumInfo->seedtime_sum !== null) { + $update = [ + 'seedtime' => $sumInfo->seedtime_sum ?? 0, + 'leechtime' => $sumInfo->leechtime_sum ?? 0, + 'seed_time_updated_at' => Carbon::now()->toDateTimeString(), + ]; + NexusDB::table('users') + ->where('id', $user->id) + ->update($update); + do_log("$logPrefix, [SUCCESS]: $user->id => " . json_encode($update)); + $count++; + } + } $costTime = time() - $beginTimestamp; - do_log("$logPrefix, [DONE], sql: $sql, results: " . var_export($results, true) . " cost time: $costTime seconds"); + do_log("$logPrefix, [DONE], user total count: " . count($users) . ", success update count: $count, cost time: $costTime seconds"); } } diff --git a/include/constants.php b/include/constants.php index c9a1183b..2b9b8303 100644 --- a/include/constants.php +++ b/include/constants.php @@ -1,6 +1,6 @@