- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть express, установлен модуль mysql, цель: соединиться с базой где-то в каком-то месте один раз, и не делать в разных скриптах, в т.ч. и скриптах других моих модулей подобное:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'user',
password : '1111',
database : 'test'
});
connection.connect(function(err){
if(!err) {
console.log("Database is connected ");
} else {
console.log("Error connecting database ");
}
});
При этом, нужно ли мне использовать pool запросов? Если да, то как правильно к этому подойти? Весь смысл в том, чтобы понять как данное соединение сделать глобальным чтобы его повсеместно использовать, и так чтобы это не вызвало нагрузки на систему и со временем не повесило мускул. p.s. мои знания того как это работает в node.js - сыры пока что, очень надеюсь на детальное изъяснение решения по данной задаче.
Если этот модуль, то он умеет
Оптимизайка, так, а как poll сделать глобальным чтоб нигде не использовать:
var pool = mysql.createPool
Или без этого никак?
p.s. и при установке этого модуля вот что я получил:
npm WARN addRemoteGit Error: not found: git
npm WARN addRemoteGit at F (C:\Program Files\nodejs\node_modules\npm\node_mo
dules\which\which.js:72:28)
npm WARN addRemoteGit at E (C:\Program Files\nodejs\node_modules\npm\node_mo
dules\which\which.js:75:29)
npm WARN addRemoteGit at C:\Program Files\nodejs\node_modules\npm\node_modul
es\which\which.js:83:16
npm WARN addRemoteGit at FSReqWrap.oncomplete (fs.js:95:15)
npm WARN addRemoteGit felixge/node-mysql resetting remote C:\Users\sanu0074\App
Data\Roaming\npm-cache\_git-remotes\git-github-com-felixge-node-mysql-git-808786
65 because of error: { [Error: not found: git] code: 'ENOGIT' }
npm ERR! git clone --template=C:\Users\sanu0074\AppData\Roaming\npm-cache\_git-r
emotes\_templates --mirror git://github.com/felixge/node-mysql.git C:\Users\sanu
0074\AppData\Roaming\npm-cache\_git-remotes\git-github-com-felixge-node-mysql-gi
t-80878665: undefined
npm ERR! git clone --template=C:\Users\sanu0074\AppData\Roaming\npm-cache\_git-r
emotes\_templates --mirror git://github.com/felixge/node-mysql.git C:\Users\sanu
0074\AppData\Roaming\npm-cache\_git-remotes\git-github-com-felixge-node-mysql-gi
t-80878665: undefined
npm WARN addRemoteGit Error: not found: git
npm WARN addRemoteGit at F (C:\Program Files\nodejs\node_modules\npm\node_mo
dules\which\which.js:72:28)
npm WARN addRemoteGit at E (C:\Program Files\nodejs\node_modules\npm\node_mo
dules\which\which.js:75:29)
npm WARN addRemoteGit at C:\Program Files\nodejs\node_modules\npm\node_modul
es\which\which.js:83:16
npm WARN addRemoteGit at FSReqWrap.oncomplete (fs.js:95:15)
npm WARN addRemoteGit felixge/node-mysql resetting remote C:\Users\sanu0074\App
Data\Roaming\npm-cache\_git-remotes\https-github-com-felixge-node-mysql-git-cb83
b7f6 because of error: { [Error: not found: git] code: 'ENOGIT' }
npm ERR! git clone --template=C:\Users\sanu0074\AppData\Roaming\npm-cache\_git-r
emotes\_templates --mirror https://github.com/felixge/node-mysql.git C:\Users\sa
nu0074\AppData\Roaming\npm-cache\_git-remotes\https-github-com-felixge-node-mysq
l-git-cb83b7f6: undefined
npm ERR! git clone --template=C:\Users\sanu0074\AppData\Roaming\npm-cache\_git-r
emotes\_templates --mirror https://github.com/felixge/node-mysql.git C:\Users\sa
nu0074\AppData\Roaming\npm-cache\_git-remotes\https-github-com-felixge-node-mysq
l-git-cb83b7f6: undefined
npm WARN addRemoteGit Error: not found: git
npm WARN addRemoteGit at F (C:\Program Files\nodejs\node_modules\npm\node_mo
dules\which\which.js:72:28)
npm WARN addRemoteGit at E (C:\Program Files\nodejs\node_modules\npm\node_mo
dules\which\which.js:75:29)
npm WARN addRemoteGit at C:\Program Files\nodejs\node_modules\npm\node_modul
es\which\which.js:83:16
npm WARN addRemoteGit at FSReqWrap.oncomplete (fs.js:95:15)
npm WARN addRemoteGit felixge/node-mysql resetting remote C:\Users\sanu0074\App
Data\Roaming\npm-cache\_git-remotes\git-github-com-felixge-node-mysql-git-984047
cf because of error: { [Error: not found: git] code: 'ENOGIT' }
npm ERR! git clone --template=C:\Users\sanu0074\AppData\Roaming\npm-cache\_git-r
emotes\_templates --mirror git@github.com:felixge/node-mysql.git C:\Users\sanu00
74\AppData\Roaming\npm-cache\_git-remotes\git-github-com-felixge-node-mysql-git-
984047cf: undefined
npm ERR! git clone --template=C:\Users\sanu0074\AppData\Roaming\npm-cache\_git-r
emotes\_templates --mirror git@github.com:felixge/node-mysql.git C:\Users\sanu00
74\AppData\Roaming\npm-cache\_git-remotes\git-github-com-felixge-node-mysql-git-
984047cf: undefined
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs
\\node_modules\\npm\\bin\\npm-cli.js" "install" "felixge/node-mysql"
npm ERR! node v0.12.7
npm ERR! npm v2.11.3
npm ERR! code ENOGIT
npm ERR! not found: git
npm ERR!
npm ERR! Failed using git.
npm ERR! This is most likely not a problem with npm itself.
npm ERR! Please check if you have git installed and in your PATH.
npm ERR! Please include the following file with any support request:
npm ERR! C:\Users\sanu0074\WebstormProjects\test\npm-debug.log
Похоже что ругается на GIT, но он установлен и работает
Похоже что ругается на GIT, но он установлен и работает
Который из них? В этом же рабочем каталоге, команда git --version что выдаёт?
Выдает git version 1.9.5.msysgit.1
Вот что в git bash нарисовало при установке:
Оптимизайка, p.s. выполнил так команду:
Заработало, хотя на гитхабе так написано
---------- Добавлено 27.07.2015 в 02:22 ----------
Но, как же теперь сделать poll глобальным? Я не оч что-то пойму...
Не очень понятно, что значит "глобальным". Инициализация подключения к базе выполняется в главном модуле, где у вас роутинг. А далее эта переменная доступна в замыканиях, т.е.
var express = require("express");
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host : 'example.org',
user : 'bob',
password : 'secret'
});
var app = express();
app.get("/",function(req,res){
pool.query(...);
});
app.listen(8000);
Оптимизайка, вот я сделал в данном случае так:
var mysql = require('mysql');
var pool = mysql.createConnection({
connectionLimit : 10,
host : 'localhost',
user : 'test',
password : '1111',
database : 'test'
});
pool.connect(function(err){
if(!err) {
log.info("Database is connected ");
} else {
log.error("Error connecting database ");
}
});
var data = null;
pool.query('SELECT * FROM `table` ', function(err, rows, fields) {
//pool.end();
if (!err) {
data = {data: rows};
}
else {
log.error('Error while performing Query.' + err);
}
});
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', data);
});
И при этом, выводится все из таблицы. Но, например, я сторонним инструментом (phpmyadmin) удалил из БД одну строку и добавил новых 10, а изменения на моей странице nodejs не отображаются, там по прежнему только изначальные данные. Отобразятся текущие данные, те изменения что произошли, только если перезапустить ноду. Почему так? что я делаю не правильно?
Потому что функция pool.query у вас выполняется ОДИН раз, далее все время берутся данные из переменной data.
Попробуйте для сравнения так:
/* GET home page. */
router.get('/', function(req, res, next) {
pool.query('SELECT * FROM `table` ', function(err, rows, fields) {
if (!err) {
var data = {data: rows};
res.render('index', data);
}
else {
log.error('Error while performing Query.' + err);
}
});
});
Оптимизайка, туплю) теперь работает, спасибо!
---------- Добавлено 27.07.2015 в 02:50 ----------
Оптимизайка, получается, я так понимаю, в итоге, на каждый скрипт (как например в этом index.js) имеем одно вечное открытое подключение?
var pool = mysql.createConnection({
connectionLimit : 10,
host : 'localhost',
user : 'test',
password : '1111',
database : 'test'
});
pool.connect(....
И это есть правильно?
Ну, например для какого-нибудь user.js, будет также как и в index.js объявлено
var pool = mysql.createConnection({......
---------- Добавлено 27.07.2015 в 02:51 ----------
Sanu0074, или может есть смысл создать отдельный модуль, в нем приконнектиться раз, и потом юзать это по всему приложению?
или может есть смысл создать отдельный модуль, в нем приконнектиться раз, и потом юзать это по всему приложению?
Именно так. http://dailyjs.com/2012/01/26/effective-node-modules/