Beni deli yapan bir davranışla karşılaştım ve çözemiyorum.Node.js + libmysql-client + pingSync + setInterval = baş ağrısı (true);
Birkaç MySQL bağlantıları açılır ve onları bir diziye depolayan bir komut dosyası var. MySQL'in kullanılmayan bağlantıları kapatmasını engellemek için (işlemin 7/24 çalıştırılması gerekiyor) pingSync() öğesini sık sık ateşlemek için setInterval kullanıyorum. Bu yaklaşım benim için başka bir projede aylarca çalıştı, ancak 0.8.14 düğümlü yeni bir sunucuda davranış tuhaf.
setInterval(function() {
var count = 0;
console.log('---------------------------------------------------------');
console.log('Length: ');
console.log(connections.length);
connections.forEach(function(connection){
var res = connection.pingSync();
console.log('PING mysql '+count+ '/'+(new Date().getTime()));
console.log(res);
count++;
});
console.log('---------------------------------------------------------');
}, 50000);
Beklenen sonuç:
---------------------------------------------------------
Length:
4
PING mysql 0/1351603868929
true
PING mysql 1/1351603868929
true
PING mysql 2/1351603868929
true
PING mysql 3/1351603868929
true
---------------------------------------------------------
aldığım sonuçlar:
# 1
---------------------------------------------------------
Length:
4
PING mysql 0/1351603868929
true
4
PING mysql 0/1351603868929
true
PING mysql 1/1351603868929
true
PING mysql 2/1351603868929
true
PING mysql 3/1351603868929
true
---------------------------------------------------------
# 2
ya da benim fonksiyonun, parçaları - - rastgele sırayla iki kez idam---------------------------------------------------------
Length:
4
PING mysql 0/1351604113400
4
PING mysql 0/1351604113400
PING mysql 1/1351604113400
PING mysql 2/1351604113400
PING mysql 3/1351604113400
---------------------------------------------------------
PING mysql 2/1351604113400
PING mysql 3/1351604113400
---------------------------------------------------------
---------------------------------------------------------
Benim fonksiyonu gibi görünüyor.
Bu davranışa neyin neden olabileceği hakkında bir fikri olan var mı? Ya da bu karışıklık sebebini nasıl izleyeceğinize dair herhangi bir tavsiye? Bazen beklenen sonucu yukarıda anladım ... ama çoğu zaman karışık sonuçları elde ediyorum.
DÜZENLEME: setInterval() işlevleri yalnızca bir kez çağrılır!
sorunuzun köküne hakkında emin değil, ancak [jenerik havuzu] (https://github.com/coopernurse/node-pool) sizin MySQL kurulum/devrelerde tamamını yönetmek için böyle bir şey kullanmayı düşünebilirsiniz Bağlantıları otomatik olarak - ilk etapta 4 bağlantıyı sürdürmek zorunda kalmadan bu şekilde özgürsünüz. :) – Beau
Sadece size bir cevap verdim çünkü sorunuzu değerlendirdiğimde güldüm. Soruların standart bir sözdizimi olması gerektiğini düşünüyorum. eğer (siz == katılıyorum) {dönüş lol; } – neutron