Tbrowse lento em REDE

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Tbrowse lento em REDE

Mensagem por ederxc »

Boa tarde !


Pessoal estou encontrando um pequeno problema com o tebrowse() em rede

quando abro a pesquisa com tbrowse() de um mesmo DB na rede a maquina com menos capacidade de hardware fica muito lenta , lenta mesmo ! ´o)

são duas maquina, servidor e estação
o prg esta compilado com rtlink , timeslic.obj
estou usando indice *.NTX
.............................................
Descrição da maquina estação
pentium lll 450mHz 256 ram
.............................................
Descrição servidor
Durom 1.8 Mhz 512ram
.............................................


Seria possivel o problema esta na maquina 02 ? Estranho pois quando vejo o desempnho do Proc. ele nem chega a 10% de consulmo...
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Não seria a capacidade mais limitada do Pentium III? Dá pra testar em outra máquina mais parruda no lugar dessa máquina?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Maligno escreveu:Não seria a capacidade mais limitada do Pentium III?
Mas se o uso do proc não chega nem a 10%como poderia ser , isso que não consigo entender
Dá pra testar em outra máquina mais parruda no lugar dessa máquina?
xii não tenho ,mas se não tiver jeito terei que testar de alguma forma em outra rede té++
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Se ainda não resolveu, posta aqui como esta usando o Tbrowse() ...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Poderia ser também algo relacionado a rede. Que tipo de rede você está usando? São apenas duas máquinas?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Maligno escreveu:Poderia ser também algo relacionado a rede. Que tipo de rede você está usando? São apenas duas máquinas?

Maligno a rede é crossover (ponta-a-ponta)


Leo , ainda não resolvi o problema
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

a rede é crossover (ponta-a-ponta)
Não deveria ser lento por causa disso. A não ser que haja algum problema numa das placas. Tentou trocar?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Pois bem , achei a causa do problema , era um refreshall() a cada loop

Mas agora o problema ficou ainda maior , pois este refreshall() é nessesario a cada "n" segundos para manter o browse atualizado , caso haja alguma deleção de arquivo e eu não sei como empregalo a cada "n" segundos sem que ele fique dentro de um do while


Código: Selecionar todos

static FUNC cPesqfor(vcod)            //Nome
Sele C
set order to 2
priv cpesq:=""                        //variavel de pesquisa
priv tabela:=""
tabela=savescreen(00,00,24,80,tabela )
set color to ("n/gb")
@04,00 clear to 16,50
Dispbox(04,00,16,50)
@05,01 say ("Pesquisa:")
@05,10 say repli("_",30) color("n/gb")
@06,01 say repli("Ä",49)
#include "inkey.ch"
brw:=TBrowseDb(07,01,15,49)
brw:HeadSep:=Chr(196)  + Chr(196) + CHr(196)
brw:ColSep :=Space(01) + Chr(179) + Space(01)
brw:ColorSpec:="n/gb,gr+/b"
colum1:=tbcolumnnew('Codigo'     ,{||C->cod })
colum2:=tbcolumnnew('Setor'      ,{||C->(left(forn,35))})
brw:addcolumn(colum1)
brw:addcolumn(colum2)
mensagem("Digite o SETOR ou use setas para pesquisa")
brw:right()
brw:gotop()
set cursor off
do while .t.
   brw:refreshall()
   do while(! brw:stabilize())
   enddo
   brw:forcestable()
      if brw:stable
      if brw:hitTop()
         @16,35 say" Inicio " color('b-/gB')
      Elseif brw:hitBottom()
         @16,35 say"  Fim   " color('b-/gB')
      else
         @16,35 say"ÄÄÄÄÄÄÄÄÄÄ"
      endif
   endif
   if empty(cpesq)
      @05,10 say repli("_",30) color ("n/gb")
   endif
   nkey:=inkey(5)
   if nkey == K_UP
      brw:up()
      cpesq=""
   elseif nkey == K_DOWN
      brw:down()
      cpesq=""
   elseif nkey == K_LEFT
      brw:left()
      cpesq=""
   elseif nkey == K_RIGHT
      brw:right()
      cpesq=""
   elseif nkey == K_HOME
      brw:home()
      cpesq=""
   elseif nkey == K_END
      brw:end()
      cpesq=""
   elseif nkey == K_PGUP
      brw:pageUp()
      cpesq=""
   elseif nkey == K_PGDN
      brw:pageDown()
      cpesq=""
   elseif nkey == K_CTRL_PGUP
      brwr:goTop()
      cpesq=""
   elseif nkey == K_CTRL_PGDN
      brw:goBottom()
      cpesq=""
   elseif nkey == K_CTRL_HOME
      brw:panHome()
      cpesq=""
   elseif nkey == K_CTRL_END
      brw:panEnd()
      cpesq=""
   elseif nkey == K_CTRL_LEFT
      brw:panLeft()
      cpesq=""
   elseif nkey == K_CTRL_RIGHT
      brw:panRight()
      cpesq=""
   elseif nKey== K_ENTER
      vcod=C->cod
      keyb strzero(vcod)
      exit
   elseif nkey==K_ESC
      exit
   elseif(nkey>=32 .and. nkey<=255) .and.len(cpesq)<30
       cpesq:=upper((cpesq)+chr(nkey))
       @05,10 say cpesq   color("n/gb")
       set softseek on
       brw:gotop()
       seek acento(cpesq)
       if ! found()
           cpesq:=upper(left(cpesq,len(cpesq)-1))
           seek acento(cpesq)
           @05,10 say cpesq +"_" color("n/gb")
       endif
       set softseek off
   elseif nkey==8 .and. len(cpesq)>0             //bakspace
       cpesq:=upper(left(cpesq,len(cpesq)-1))
       @05,10 say cpesq +"_" color("n/gb")
       set softseek on
       brw:gotop()
       seek acento(cpesq)
       if ! found()
           cpesq:=upper(left(cpesq,len(cpesq)-1))
           seek acento(cpesq)
           @05,10 say cpesq +" " color("n/gb")
           set softseek off
       endif
   endif
ENDDO
set cursor on
restscreen(00,00,24,80,tabela )
RETURN

:'(
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ele pode e deve ficar dentro do WHILE. Você só precisaria acrescentar uma variável que armazenará uma contagem de segundos. Esgotado o tempo ou pressionada uma tecla qualquer, o contador é reciclado, o refresh é executado e o processamento continua até voltar ao topo da malha.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Eder, é simples...é só dah um refreshall() logo depois que o usuario deletou algo !!! se ele não deleta...não vai ficar dando refreshall() em vão !!

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

sygecom escreveu:Eder, é simples...é só dah um refreshall() logo depois que o usuario deletou algo !!! se ele não deleta...não vai ficar dando refreshall() em vão !!

Abraços
Leonardo Machado


Seria dessa forma se eu usa-se o tbrowse() para alterar , incluir , deletar , mas eu o uso somente para pesquisa , eu chamo o tbrowse() pesquiso e retorno os dados para as variaveis , só ae que decido se vou alterar ou excluir , ou seja ja estou fora do tbrowse() não tem como dar um refreshall(0 na deleção ou seja , tem que ser exatamente como o maligno citou , deichar que o próprio tbrowse tenha uma variavel que faça uma contagem a cada "n" segundos para fazer refreshall() independente de meu loop , pois se a cada loop fizer um refreshall() vai dar na mesma ...

:f
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

O refresh serve para atualizar o browser após a ocorrência de um evento de apagamento, alteração ou inclusão. Mas se esse evento ocorre em outra máquina, não adianta nada. Obrigatoriamente tem de ser feito o refresh em função do tempo e TAMBÉM quando o evento ocorre na própria máquina.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Maligno, não entendi... Se vc está no PC1, com um DBF aberto digamos nos primeiros 20 registros, e alguém no PC2 deleta o registro 10 do mesmo DBF, como o PC1 vai saber da deleção se não reconstruir a tela (refresh)?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Não, Eolo. Quando eu disse "não adianta nada", estava me referindo à idéia do Leonardo de dar um refresh apenas quando se apaga um registro. Isso é que não adianta, porque, justamente como eu disse, se o evento é externo, não há meio de saber. Por isso o refresh deve obrigatoriamente ocorrer em função do tempo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Ah, sim...
Responder