Página 1 de 1

Lentidão na conexão com FTP

Enviado: 09 Jan 2015 11:45
por alaminojunior
Caros,

implementei em meus sistemas uma rotina de envio de arquivos via FTP, para utilizar nos processos de NFe, CTe e NFP (Nota Fiscal Paulista).
Porém existe uma lentidão no processo de abertura da conexão. Depois de aberta a conexão, o upload de arquivos é super rápido.

Pergunto, se isso é normal, ou existe como acelerar de alguma forma este processo de abertura.

Segue trecho da rotina que uso.

Código: Selecionar todos

oProgress:Caption:= "Conectando ao servidor FTP ... "
cUrl:= "ftp://" + cFTPUSER + ":" + cFTPPASS + "@" + cFTPSERVER
oUrl:= TUrl():New(cUrl)
oFTP:= TIPClientFtp():New(oUrl,.F.)
oFTP:nConnTimeout:= 15000
oFTP:bUsePasv:= .T.
oFTP:nDefaultPort:= cFTPPORTA
oFTP:oUrl:cUserID:= cFTPUSER
oFTP:oUrl:cServer:= cFTPSERVER
oFTP:oUrl:cPassword:= cFTPPASS
cArq = strtran(cArq,'\','/')
if oFTP:Open( cUrl )
   oProgress:Caption:= "Conectando ao servidor FTP ...... OK"
   if !oFTP:Cwd( '/www/' + cServ + '/' + cPasta)
       if !oFTP:Mkd('/www/' + cServ + '/' + cPasta)
          oProgress:Caption:= "" 
          return .f.
       endif
   endif       
   oProgress:Caption:= "Transferindo " + cdisp   

Lentidão na conexão com FTP

Enviado: 09 Jan 2015 11:53
por Itamar M. Lins Jr.
Pode ser o firewall do anti virus. O Avast já gosta de fazer isso e ou nem deixar conectar, acredito que esses pseudo anti virus faz roteamento e como são todos bem, bem mal feitos faz tudo errado.

Saudações,
Itamar M. Lins Jr.

Lentidão na conexão com FTP

Enviado: 09 Jan 2015 14:57
por alaminojunior
Infelizmente não Itamar !

Desabilitei tudo aqui e fiz o teste, e a mesma coisa.

Testei o acesso ao servidor FTP de outras 3 maneiras.
Via prompt do DOS - Rápido
Via Windows Explorer - Rápido
Via Filezilla - Rápido

Através do programa via TIPClientFtp() o processo de conexão ao servidor é lento. Quando o cliente tem uma conexão bem rápida com a Internet, nem atrapalha, mas quando a conexão é lenta ... chega a irritar.

Lentidão na conexão com FTP

Enviado: 09 Jan 2015 15:20
por Jairo Maia
Olá Alamino,

Apenas um palpite:

Uso a classe TIPClientFtp() para conexão FTP e não tenho problema de lentidão para se conectar. Chega a ser imperceptível. Não pode estar ligado a alguma configuração do servidor com o qual se está tentando conectar?

Lentidão na conexão com FTP

Enviado: 09 Jan 2015 16:34
por alaminojunior
Jairo, pode ser.
Não testei em outro servidor ainda, que alias não tenho.
Vou ver a possibilidade de fazer isso e retorno aqui.

Por hora agradeço a todos.

Lentidão na conexão com FTP

Enviado: 09 Jan 2015 17:44
por Itamar M. Lins Jr.
Hehehehe, a única diferença Jairo, é que o Harbour dele tem um X na frente rsrsrsr.
Pode não ter nada haver, mas o certo é isolar o problema, compilar o programa com o harbour 3.2 ou 3.4 e testar.

Saudações,
Itamar M. Lins Jr.

Lentidão na conexão com FTP

Enviado: 11 Jan 2015 12:30
por sygecom
Alamino, bom dia.
Uso xHarbour e não tenho lentidão.Você não postou sua rotina completa, então lhe pergunto, está fechando a conexão assim que termina sua rotina?

Lentidão na conexão com FTP

Enviado: 11 Jan 2015 16:16
por alaminojunior
Boa tarde Leo !
Acredito que esteja fechando sim.
Segue a rotina.

Código: Selecionar todos

oProgress:Caption:= "Conectando ao servidor FTP ... "
cUrl:= "ftp://" + cFTPUSER + ":" + cFTPPASS + "@" + cFTPSERVER
oUrl:= TUrl():New(cUrl)
oFTP:= TIPClientFtp():New(oUrl,.F.)
oFTP:nConnTimeout:= 15000
//oFTP:bUsePasv:= .T.
oFTP:nDefaultPort:= cFTPPORTA
oFTP:oUrl:cUserID:= cFTPUSER
oFTP:oUrl:cServer:= cFTPSERVER
oFTP:oUrl:cPassword:= cFTPPASS
cArq = strtran(cArq,'\','/')
if oFTP:Open( cUrl )
   oProgress:Caption:= "Conectando ao servidor FTP ...... OK"
   if !oFTP:Cwd( '/www/' + cServ + '/' + cPasta)
       if !oFTP:Mkd('/www/' + cServ + '/' + cPasta)
          oProgress:Caption:= "" 
          return .f.
       endif
   endif       
	oProgress:Caption:= "Transferindo " + cdisp                                             	
   oFTP:exGauge:= { | done | MilliSec(15),oProgress:Caption:= "Enviando arquivo ... "+ cArq + STR((done/nTam)*100,4)+" %",oProgress:Refresh() }
   if !oFtp:UploadFile( cArq, '/www/' + cServ + '/' + cPasta + '/' + right(cArq,iif(cServ='NFP',12,52)) )
      oProgress:Caption:= ""
      return .f.
   endif
   oFTP:CWD( ".." )
	Millisec(50) 
   oFTP:Close()
   oProgress:Caption:= "Transferindo para Daxxi ..."
   Envia_Sql_Daxxi(cPasta,cRef,cServ,right(cArq,iif(cServ='NFP',12,52)),1)
   oProgress:Caption:= ""
   return .t.
Já testei e a demora é no método Open() do objeto oFtp. Demora cerca de 20 segundos para abrir a conexão.
Depois que abre, o processo de envio dos arquivos é muito rápido, até porque os arquivos costumam ser pequenos.

Lentidão na conexão com FTP

Enviado: 11 Jan 2015 16:33
por sygecom
Chefe, antes de cada RETURN tem que ter um oFTP:Close(), veja que tem dois RETURN que está voltando sem fechar a conexão, talvez nas próximas vez ele demore a conectar por que já existe uma conexão aberta que ficou pendurada,revise ai.