увеличена скорость получание информации о размерах

This commit is contained in:
Alexey Kasyanchuk 2017-01-03 06:14:23 +03:00
parent c13534fe68
commit d8239466ce
4 changed files with 63 additions and 10 deletions

View File

@ -40,6 +40,29 @@ LOCK TABLES `files` WRITE;
/*!40000 ALTER TABLE `files` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `statistic`
--
DROP TABLE IF EXISTS `statistic`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `statistic` (
`size` bigint(20) unsigned DEFAULT NULL,
`files` bigint(20) unsigned DEFAULT NULL,
`torrents` int(10) unsigned DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `statistic`
--
LOCK TABLES `statistic` WRITE;
/*!40000 ALTER TABLE `statistic` DISABLE KEYS */;
/*!40000 ALTER TABLE `statistic` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `torrents`
--
@ -79,4 +102,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2017-01-02 11:33:56
-- Dump completed on 2017-01-03 6:03:58

View File

@ -74,6 +74,32 @@ app.get('*', function(req, res)
res.sendfile(__dirname + '/build/index.html');
});
// start
// обновление статистики
setInterval(() => {
let stats = {};
socketMysql.query('SELECT COUNT(*) as tornum FROM `torrents`', function (error, rows, fields) {
stats.torrents = rows[0].tornum;
socketMysql.query('SELECT COUNT(*) as filesnum, SUM(`size`) as filesizes FROM `files`', function (error, rows, fields) {
stats.files = rows[0].filesnum;
stats.size = rows[0].filesizes;
io.sockets.emit('newStatistic', stats);
socketMysql.query('DELETE FROM `statistic`', function (err, result) {
if(!result) {
console.error(err);
}
socketMysql.query('INSERT INTO `statistic` SET ?', stats, function(err, result) {
if(!result) {
console.error(err);
}
});
})
});
});
}, 60 * 1000)
io.on('connection', function(socket)
{
function baseRowData(row)
@ -109,13 +135,8 @@ io.on('connection', function(socket)
if(typeof callback != 'function')
return;
let stats = {};
socketMysql.query('SELECT COUNT(*) as tornum FROM `torrents`', function (error, rows, fields) {
stats.torrents = rows[0].tornum;
socketMysql.query('SELECT COUNT(*) as filesnum FROM `files`', function (error, rows, fields) {
stats.files = rows[0].filesnum;
callback(stats)
});
socketMysql.query('SELECT * FROM `statistic`', function (error, rows, fields) {
callback(rows[0])
});
});

View File

@ -73,6 +73,9 @@ export default class RecentTorrents extends Component {
});
}
render() {
if(!this.torrents || this.torrents.length == 0)
return null;
return (
<List className='animated'>
<Subheader inset={true}>Most recent torrents</Subheader>

View File

@ -5,6 +5,8 @@ import TextField from 'material-ui/TextField';
import RaisedButton from 'material-ui/RaisedButton';
import RefreshIndicator from 'material-ui/RefreshIndicator';
import formatBytes from './format-bytes'
export default class Search extends Component {
constructor(props)
{
@ -28,6 +30,10 @@ export default class Search extends Component {
this.stats = statistic;
this.forceUpdate();
});
window.torrentSocket.on('newStatistic', (statistic) => {
this.stats = statistic;
this.forceUpdate();
});
}
render() {
const style = {
@ -59,7 +65,7 @@ export default class Search extends Component {
{
this.stats
?
<div className='fs0-75' style={{color: 'rgba(0, 0, 0, 0.541176)'}}>we have {this.stats.torrents} torrents and around {this.stats.files} files here</div>
<div className='fs0-75' style={{color: 'rgba(0, 0, 0, 0.541176)'}}>we have information about {this.stats.torrents} torrents and around {this.stats.files} files and { formatBytes(this.stats.size, 1) } of data</div>
:
null
}