]> git.mxchange.org Git - friendica.git/blob - src/Worker/UpdateGServers.php
workerqueue now has a "command" field
[friendica.git] / src / Worker / UpdateGServers.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2020, Friendica
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  *
20  */
21
22 namespace Friendica\Worker;
23
24 use Friendica\Core\Logger;
25 use Friendica\Core\Worker;
26 use Friendica\Database\DBA;
27
28 class UpdateGServers
29 {
30         /**
31          * Updates up to 100 servers
32          */
33         public static function execute()
34         {
35                 $updating = Worker::countWorkersByCommand('UpdateGServer');
36                 $limit = 100 - $updating;
37                 if ($limit <= 0) {
38                         Logger::info('The number of currently running jobs exceed the limit');
39                         return;
40                 }
41
42                 $outdated = DBA::count('gserver', ["`next_contact` < UTC_TIMESTAMP()"]);
43                 $total = DBA::count('gserver');
44                 Logger::info('Server status', ['total' => $total, 'outdated' => $outdated, 'updating' => $limit]);
45
46                 $gservers = DBA::select('gserver', ['url'], ["`next_contact` < UTC_TIMESTAMP()"], ['limit' => $limit]);
47                 if (!DBA::isResult($gservers)) {
48                         return;
49                 }
50
51                 $count = 0;
52                 while ($gserver = DBA::fetch($gservers)) {
53                         Worker::add(PRIORITY_LOW, 'UpdateGServer', $gserver['url'], false, true);
54                         $count++;
55                 }
56                 DBA::close($gservers);
57                 Logger::info('Updated servers', ['count' => $count]);
58         }
59 }