2015-05-05 4 views
0

Я хочу иметь одно единственное mysql-соединение, используемое пользователем EVERY, которое все время выбирает данные и обновляет его, если выполняются определенные условия (например, размещенная ставка). Наиболее предпочтительно даже тогда, если пользователь не посещает веб-сайт, если это возможно?Постоянное соединение mysql, независимо от того, подключены ли пользователи?

Итак, в последние дни я постоянно работаю над поиском, пытаясь разобраться в моей проблеме, но, похоже, нет людей с достаточными знаниями, чтобы помочь мне с моей проблемой. Поэтому я стараюсь задавать свой вопрос как можно более простым, не запутывая вас своим кодом. (Но если вам интересно увидеть код: http://pastebin.com/dRFzWtEH)

Однако, это все об аукционе веб-сайт с живым таймером обратного отсчета, и я просто хочу запустить сервер node.js, что SELECT s данных каждую секунду и отправляет его в WebSocket, чтобы показать всем пользователям, посещающим этот сайт, обратный отсчет и обновление цен (по ставкам) в реальном времени.

Я выполнил всю эту задачу, используя одно-mysql-запросы, но затем я столкнулся с errors. Затем автор модуля GitHub-mysql-модуль предложил мне использовать пул MySQL. Но совершенно не похоже на то, чтобы найти мою конкретную цель, изложенную в моем первом предложении этого вопроса.

Теперь я хочу спросить в целом, как я могу это сделать, и возможно ли это, или хотя бы один пользователь должен быть на моем веб-сайте?

Как выглядит код/​​кодовая структура/логический процесс?

И я думаю, мне не нужно вообще закрывать соединение, поэтому мне не нужны функции, такие как connection.end()?

+0

Только примечание о вашей структуре вопросов ... В первом абзаце вашего вопроса должна быть описана ваша проблема, чтобы мы могли видеть, что ваш вопрос с первой страницы, не нажимая, чтобы посмотреть дальше. –

+0

Документацию, которую вы искали в течение нескольких дней, можно найти здесь, где вы загрузили пакет mysql: https://www.npmjs.com/package/mysql#pooling-connections, который вы только создали, и затем используйте Это. это так просто. –

+0

Спасибо, отредактирован. @KevinB –

ответ

0

Нет, не беспокойтесь о подключении пула. Это не имеет большого значения в MySQL.

Кроме того, «пул» имеет проблему - он должен очистить все настройки, @variables, состояние транзакции и т. Д. И т. Д., Прежде чем позволить следующему «клиенту» использовать объединенное соединение. Это может занять некоторое время, особенно если клиент находится далеко от сервера.

Время соединения/разъединения MySQL очень низкое, в отличие от конкурирующих продуктов.

Если вы разрабатываете веб-продукт, имейте в виду, что HTTP является «без гражданства». То есть вы не можете висеть на соединении с одной страницы на следующую страницу. Следовательно, никакое «состояние» не может быть спасено.

Редактировать

Если у вас есть «Через пруд» латентные проблемы (100-200ms между США и Европой), на сторону клиента пул соединений может быть очень полезным. Однако, если программное обеспечение пула вводит команды для перезагрузки, это может полностью победить в пуле.

Если вы можете включить «общий журнал» (в размещенной службе, возможно, вам придется использовать log_output=TABLE), сделайте это, чтобы увидеть, какие дополнительные команды вводятся.

Кроме того, рассмотрите возможность объединения нескольких клиентских SQL-операторов в хранимые процедуры, чтобы сократить их назад и вперед.

Также рассмотрите либо перемещение сервера MySQL ближе к клиенту, либо перемещение клиента ближе к серверу MySQL, в зависимости от того, как конечный пользователь к клиенту back-and-forth сравнивается с клиентом с трафиком MySQL.

+0

Спасибо за ваш ответ. Можете ли вы привести мне пример для вашего последнего предложения? Значит, я понял это немного лучше? Также это мой текущий код (наконец-то работает): http://stackoverflow.com/questions/30064272/remove-a-square-bracket-and-receiving-json-properly-in-nodejs-websocket-envirome?noredirect1 Какой connectionLimit вы предложите использовать для пула и почему? И этот код очищает все настройки, как вы уже сказали, или мне нужно где-то добавить код? Цените свое время! –

+0

Также вы сказали «особенно, если клиент находится далеко от сервера». Поэтому на данный момент я использую OpenShift, где-то в США, но я живу здесь, в Германии, в Берлине. Считаете ли вы, как только мой сайт прибудет ок. 100 онлайн-пользователей или что-то (не знаю, какое значение было бы проблемой), я должен подумать об аренде собственного сервера nodejs, размещенного в моей стране? –

+0

Re: последнее предложение: Это веб-приложение? Использование AJAX или нет? Нажимает ли пользователь какую-то кнопку, и вы открываете новую страницу? –

Смежные вопросы