Hard commit ou algo assim
Enviado: 26 Ago 2014 09:55
Ainda estou mexendo naquele aplicativo Clipper Summer, passando pra Harbour.
Tem uma coisa nele que acho péssimo pra programação, mas estou na dúvida sobre vantagem do uso.
Os arquivos são abertos/fechados muitas vezes durante o fonte.
Pensava que era por causa de limite de arquivos abertos, mas limita a um máximo de uns 5 arquivos abertos, somente aonde necessário.
Num caixa, por exemplo, a cada lançamento os arquivos são abertos/fechados.
É ambiente de rede, servidor com nobreak.
Mas no caixa se desligar o terminal, acabar a luz, ou coisa assim, só se perde o lançamento atual.
Se deixar os arquivos abertos, como depende do cache do sistema operacional, qualquer coisa pode se perder.
Muito mais seguro apenas se limitar ao último lançamento, ficando parecido com um SQL no que se refere a situação do terminal se desligar, ou ficar sem energia elétrica.
Mas trabalhar num fonte onde um arquivo pode ou não estar aberto é trabalhoso demais e perigoso.
Tem algo no Harbour que permita fazer esse "hard commit", pra salvar tudo pendente?
Alternativas que imaginei:
- Salvar/restaurar arquivo,índices,ordem e recno pra poder fechar e reabrir
- Usar uma única área pra abrir/fechar os mesmos arquivos nos append/replace - opção talvez mais interessante
exemplo da segunda alternativa:
Tem alguma coisa no Harbour que já garanta salvar tudo?
Obs.
É engraçado, mas como justificar a mudança de fonte para o que é certo, se do jeito atual pode-se perder apenas o último lançamento, mas se ficar em cache, pode-se perder qualquer coisa, um bloco com informações aleatórias.
Tem uma coisa nele que acho péssimo pra programação, mas estou na dúvida sobre vantagem do uso.
Os arquivos são abertos/fechados muitas vezes durante o fonte.
Pensava que era por causa de limite de arquivos abertos, mas limita a um máximo de uns 5 arquivos abertos, somente aonde necessário.
Num caixa, por exemplo, a cada lançamento os arquivos são abertos/fechados.
É ambiente de rede, servidor com nobreak.
Mas no caixa se desligar o terminal, acabar a luz, ou coisa assim, só se perde o lançamento atual.
Se deixar os arquivos abertos, como depende do cache do sistema operacional, qualquer coisa pode se perder.
Muito mais seguro apenas se limitar ao último lançamento, ficando parecido com um SQL no que se refere a situação do terminal se desligar, ou ficar sem energia elétrica.
Mas trabalhar num fonte onde um arquivo pode ou não estar aberto é trabalhoso demais e perigoso.
Tem algo no Harbour que permita fazer esse "hard commit", pra salvar tudo pendente?
Alternativas que imaginei:
- Salvar/restaurar arquivo,índices,ordem e recno pra poder fechar e reabrir
- Usar uma única área pra abrir/fechar os mesmos arquivos nos append/replace - opção talvez mais interessante
exemplo da segunda alternativa:
Código: Selecionar todos
AbreArquivos( { "arquivo1", "arquivo2", "arquivo3" } )
...
...
nSelect := Select()
SELECT 0
USE arquivo2 ALIAS savedata
SET INDEX TO arquivo2
REPLACE
USE
SELECT ( nSelectAnt )
Obs.
É engraçado, mas como justificar a mudança de fonte para o que é certo, se do jeito atual pode-se perder apenas o último lançamento, mas se ficar em cache, pode-se perder qualquer coisa, um bloco com informações aleatórias.