dbAudit.getAllServers = function () {
return new Promise(function (resolve, reject) {
dbAudit.query('SELECT "FSDN" AS host, "Listen_Port" AS port, "Instance" AS "clusterName", "Version" AS version FROM "COLLECTE_POSTGRES"')
.then(function (clusters) {
var remotesPromises = clusters.map(function (cluster) {
var remote = new Sequelize('postgres', collector.user, collector.password, {
host: cluster.host,
port: cluster.port,
dialect: 'postgres',
logging: false
});
return getDatabases(remote);
});
Promise.all(remotesPromises).then(function (remotes) {
resolve(remotes);
});
}, reject);
});
};
function getDatabases(remote) {
return new Promise(function (resolve) {
remote.query("SELECT datname FROM pg_catalog.pg_database WHERE datname NOT IN ('template0','template1','postgres','repmgr')")
.then(function (databases) {
resolve({ status: 'success', databases: databases });
}, function (error) {
resolve({ status: 'error', error: error });
});
});
}
dbAudit.getAllServers = function () {
return dbAudit.query('SELECT "FSDN" AS host, "Listen_Port" AS port, "Instance" AS "clusterName", "Version" AS version FROM "COLLECTE_POSTGRES"')
.then(function (clusters) {
var remotesPromises = clusters.map(function (cluster) {
var remote = new Sequelize('postgres', collector.user, collector.password, {
host: cluster.host,
port: cluster.port,
dialect: 'postgres',
logging: false
});
return getDatabases(remote);
});
return Promise.all(remotesPromises);
});
};
function getDatabases(remote) {
return remote.query("SELECT datname FROM pg_catalog.pg_database WHERE datname NOT IN ('template0','template1','postgres','repmgr')")
.then(function (databases) {
return { status: 'success', databases: databases };
}, function (error) {
return { status: 'error', error: error };
});
}
fetch('/api.php', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
action: 'auth',
payload: {
email: ...,
password: ...
}
})
});
<?php
require_once 'auth.class.php';
if ($_POST['action'] === 'auth') {
Auth::isAuth($_POST['payload']);
}
$pq = pq($el); // Это аналог $ в jQuery
$pq->find('h2.entry-title > a.blog')->attr('href', 'http://%username%.habrahabr.ru/blog/')->html('%username%'); // меняем атрибуты найденого элемента
$pq->find('div.entry-info')->remove(); // удаляем ненужный элемент
$tags = $pq->find('ul.tags > li > a');
$tags->append(': ')->prepend(' :'); // добавляем двоеточия по бокам
$pq->find('div.content')->prepend('<br />')->prepend($tags); // добавляем контент в начало найденого элемента
<body onload="(function() {getVSD();window.setInterval(getVSD, 3000)})()">
function getVSD(){ //Get Status of Servers
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', 'status.php', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
var response = JSON.parse(xmlhttp.responseText);
response.forEach(function(item){loadContent(item.element,item.status);});
} else {GLOBAL_STATUS.forEach(function(item){loadContent(item.element,item.status);});}
};}
xmlhttp.send(null);
}
if(xmlhttp.status == 200)
) изменяется соответсвующая инфо на странице без перезагрузки страницы как таковой. --
-- Структура таблицы `products`
--
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL,
`id_group` smallint(6) NOT NULL,
`unit` varchar(20) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `products`
--
INSERT INTO `products` (`id`, `id_group`, `unit`) VALUES
(1, 1, 'метры'),
(2, 2, 'литры'),
(3, 1, 'килограммы'),
(4, 1, 'метры'),
(5, 1, 'литры'),
(6, 2, 'килограммы'),
(7, 1, 'килограммы');
--
-- Индексы сохранённых таблиц
--
--
-- Индексы таблицы `products`
--
ALTER TABLE `products`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT для сохранённых таблиц
--
--
-- AUTO_INCREMENT для таблицы `products`
--
ALTER TABLE `products`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=8;
SELECT `unit`, COUNT(DISTINCT `id_group`)
FROM `products`
GROUP BY `unit`