setInterval und globale Objekte
dr.house
- javascript
Hallo,
ich habe ein Problem mit folgendem Code:
var mysql = require('mysql');
var TEST_DATABASE = 'nodejs_mysql_test';
var TEST_TABLE = 'test';
var mclient = mysql.createClient({
user: 'root',
password: 'foo',
});
mclient.query('USE '+TEST_DATABASE);
setInterval(function() {
var sql = 'INSERT INTO '+TEST_TABLE+' VALUES(123)';
mclient.query(sql);
}, 500);
Das Testskript soll alle 500ms (in node.js, aber vielleicht gilt das auch so für JS) eine Zeile in die MySQL Tabelle 'test' schreiben. Funktioniert aber nicht, es gibt auch keinen MySQL Error.
Wenn ich aber:
var mclient = mysql.createClient({
user: 'root',
password: 'foo',
});
mclient.query('USE '+TEST_DATABASE);
mit in die setInterval Funktion schreibe, funktioniert es, aber dann wird nach 500ms jedesmal eine neue MySQL-Client Instanz erzeugt, was unnötige Zeit kostet.
Wenn ich "mysql.createClient" nicht jedesmal aufrufe, funktioniert es nicht, aber 'var mclient' ist trotzdem eine gültige Instanz.
Was mache ich falsch?
Danke,
dr.house
Was mache ich falsch?
Schonmal geprüft, ob deine Datenbank so viele Zugriffe überhaupt zulässt?
Was mache ich falsch?
Schonmal geprüft, ob deine Datenbank so viele Zugriffe überhaupt zulässt?
Ja, ich hab das Interval schon auf mehrere Sekunden gestellt. Und auch folgendes probiert:
function mysql_test_insert() {
var sql = 'INSERT INTO '+TEST_TABLE+' VALUES(123)';
mclient.query(sql);
}
setInterval(function() {
mysql_test_insert();
}, 5000);
Funktioniert auch nicht. Wenn ich aber mysql_test_insert(); direkt ohne setInterval aufrufe, geht es. Seltsam.