Boa tarde, colegas estou enfrentando um problema que não consigo resolver. Preciso que a função file() identifique assim que um arquivo.txt for gerado, estou usando:
Vejo que o arquivo é gerado mas o sistema lê após NNNNNN segundos, isso em rede ok, em modo local beleza responde rapidamente, teriam alguma outra função ou dica para melhorar o desempenho?
8-|
HASA
local REQ, nHoraInicio := Seconds()
REQ := ::cDirDoMonitor + ::cArqTXT // ENT.TXT
*-- Faca enquanto nao existir arquivo
while .not. file(REQ)
IF Seconds() - nHoraInicio > 300 // Tenta 60 s = 1min
::cRetorno := 'ERRO: Protocolo nao esta ativo'
return nil
ENDIF
inkey(0.1)
end
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop Celular Android/iOS Windev Mobile WEB Windev Web
local REQ, nHoraInicio := Seconds()
REQ := ::cDirDoMonitor + ::cArqTXT // ENT.TXT
*-- Faca enquanto nao existir arquivo
while .not. file(REQ)
IF Seconds() - nHoraInicio > 300 // Tenta 60 s = 1min
::cRetorno := 'ERRO: Protocolo nao esta ativo'
return nil
ENDIF
inkey(0.1)
end
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop Celular Android/iOS Windev Mobile WEB Windev Web
Isto tem a ver com o cache do Windows. Parece que já vi algo aqui mesmo no fórum sobre o problema. Parece que tem que desativar o cache através de alguma chave do registro do Windows (Regedit). Só não sei se isto é conveniente...
Isso eu ia falar do CACHE e esqueci, desabilita o cache do HD reinicia e testa.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop Celular Android/iOS Windev Mobile WEB Windev Web
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7 (Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Esse problema já relatei tempos atrás e percebi ele quando precisei emitir NFe em rede usando o AcbrMonitor. Não consegui solucioná-lo mesmo desativando o cache do Windows. Uma operação em que na máquina local dura 5 segundos quando em rede demora no mínimo 12 segundos.
O arquivo fica criado na máquina da rede de destino, só que a máquina solicitante não enxerga. Após um delay algo é atualizado e ela passa a enxergar.
Trecho extraído hbdoc.prg do Harbour 3.4 mas tem no 3.2
IF HB_ISSTRING( cRoot )
cDir := hb_DirSepAdd( cDir )
ELSE
/* Detect Harbour root */
cRoot := "." + hb_ps()
DO WHILE hb_vfDirExists( cRoot + ".." )
IF hb_vfExists( cRoot + "README.md" ) .AND. ;
hb_vfExists( cRoot + "LICENSE.txt" ) .AND. ;
hb_vfExists( cRoot + "config" )
EXIT
ENDIF
cRoot += ".." + hb_ps()
ENDDO
ENDIF
Então, hb_vfExists("seuarquivo.txt") e outras tantas que tornam obsoletas as funções file(), fopen() etc...
O Przmek, Viktor só usam essas novas, pois suportam também protocolo TCP tipo hb_fvopen(tcp:192.168...) e hb_vfopen(com1:...) http://www.harbourdoc.com.br/show.asp?k ... fOpen()%22