Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Too many connections
#1
Selamlar
Bu şekilde bir kullanımda peşpeşe 80 90 kullanımdan sonra "Too many connections" hatası alıyorum
 Connection free ediyorum ama ne gibi bir sorun olabilir.

function Txxxxxxx.Login(pUserName, pPassword: String): TLogin;
var
MyQuery:TMyQuery;
user,pass,blok:string;
begin
  Elog(pUserName +' - '+ pPassword);
  Result  := TLogin.Create;
  MyQuery := TMyQuery.Create(nil);
  MyQuery.Connection := CreateConnection('yhackup');
  try
    try
    with MyQuery do
      begin
        close;
        SQL.Clear;
        SQL.Add('select username,password,blok from user where username=:user');
        ParamByName('user').AsString := pUserName;
        Open;
        user := Trim(FieldByName('username').AsString);
        pass := Trim(FieldByName('password').AsString);
        blok := Trim(FieldByName('blok').AsString);
        if (blok <> '') then
        begin
          Result.HataKodu := 3; (*Bloklanmış Üye*)
          Exit;
        end;
        if (user = '') then
        begin
          Result.HataKodu := 2; (*Üye Kaydı Bulunamadı*)
          Exit;
        end
        else
        begin
          if (Trim(pPassword) <> pass) then
          begin
            Result.HataKodu := 1; (*Üye Parolası Hatalı*)
            Exit;
          end
          else
          begin
            LoginTimer(pUserName);
            Result.HataKodu := 0; (*Üye Kontrolü başarılı*)
          end;
        end;
      end;
    except on E: Exception do Elog(e.Message);
    end;
  finally
    MyQuery.Connection.Free;
    MyQuery.Free;
  end;
end;

function Txxxxxxx.CreateConnection(Database: String): TMyConnection;
var
myc: TMyConnection;
begin
if Assigned(myc) then myc := TMyConnection.Create(nil);
try
   myc.Username := 'root';
   myc.Server := '10.0.0.107';
   myc.Port := 3306;
   myc.Database := Database;
   Result := myc;
finally
end;
end;

Editör bu kısmı bozmuş
B8nDa9.png



Edit; Kullandığım LoginTimer(pUserName) procedure'ünde free etmeyi unutmuşum hallettim Smile
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
CreateConnection metodunuzdaki myc isimli TMyConnection tipli lokal değişkeni kaldırıp; Result üzerinden hareket etmeniz daha sağlıklı olur, çünkü lokal değişkenler ilgili scope'dan çıkıldıktan sonra temizlenirler. Bu nedenle hata ile karşılaşabilirsiniz. Ayrıca yine aynı metodda try..finally gereksiz görünüyor. Derleyiciye boşuna trap yaptırıp, lüzumsuz ereksiz kod oluşturmasına müsaade etmemek gerek Wink

Ayrıca yine aynı metodda kullandığınız if Assigned'da sıkıntılı. Local değişkenler hafızada anlamsız bir yeri gösteriyor olabilirler(genelde de öyle olur), dolayısı ile ilk satırda daha değişkeni hiç kullanmadan hiç bir şeye atamadan yaptığınız if Assigned kıyaslaması da hatalı sonuçlara neden olabilir.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#3
(10-10-2016, Saat: 17:44)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlCreateConnection metodunuzdaki myc isimli TMyConnection tipli lokal değişkeni kaldırıp; Result üzerinden hareket etmeniz daha sağlıklı olur, çünkü lokal değişkenler ilgili scope'dan çıkıldıktan sonra temizlenirler. Bu nedenle hata ile karşılaşabilirsiniz. Ayrıca yine aynı metodda try..finally gereksiz görünüyor. Derleyiciye boşuna trap yaptırıp, lüzumsuz ereksiz kod oluşturmasına müsaade etmemek gerek Wink

Ayrıca yine aynı metodda kullandığınız if Assigned'da sıkıntılı. Local değişkenler hafızada anlamsız bir yeri gösteriyor olabilirler(genelde de öyle olur), dolayısı ile ilk satırda daha değişkeni hiç kullanmadan hiç bir şeye atamadan yaptığınız if Assigned kıyaslaması da hatalı sonuçlara neden olabilir.

Teşekkürler düzenledim yeniden Wink
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi