Carpeta de temporales

Carpeta de temporales

Postby diegopolverelli » Wed Jul 27, 2011 6:33 pm

Hola. Les transmito una inquietud mas propia de un problema de diseño que de fwh, pero... en una de esas me pueden dar alguna idea. Tengo un ERP modular, que fue creciendo a partir de una base antigua (unos 15 años), paso por DOS, clipper, evoluciono a FW, y Borland, y ahora esta trabajando con FWH perfectamente. En su momento, por facilidad de diseño, y porque no pensamos que se iba a necesitar, todos los indices temporales, bases temporales, etc, se creaban en una ruta determinada c:\tempo (siempre la misma, que debia existir para que el sistema funcione; era un requisito del sistema, que exista una carpeta TEMPO en el disco c:\, con permisos totales para el usuario).
La macana es que ahora que estoy usando en un cliente MS Windows Terminal Server; cuando abro 2 sesiones simultaneas, como el c:\tempo es el mismo para ambas sesiones, el programa, si se usan los mismos modulos, falla. ¿se les ocurre algun truquito para evitar crear una variable por usuario, con un "directorio para temporales", y tener que modificar cientos y cientos de lineas de codigo fuente?
Espero que puedan ayudarme. Gracias desde ya. Atte.
diegopolverelli
 
Posts: 149
Joined: Thu Jun 21, 2007 3:26 pm

Re: Carpeta de temporales

Postby sysctrl2 » Wed Jul 27, 2011 8:09 pm

Code: Select all  Expand view
cFile      := cTempFile( ".\", ".dbf" )
aDbf := {}
aadd(  aDbf, { 'codigo', 'C', 15, 00 }  )
aadd(  aDbf, { 'nombre', 'C', 45, 00 }  )

dbcreate(  cFile, aDbf )

use cFile new

* you codigo

close

FERASE( cFile )

saludos...
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 951
Joined: Mon Feb 05, 2007 7:15 pm

Re: Carpeta de temporales

Postby RodolfoRBG » Thu Jul 28, 2011 6:36 am

Que tal agregarle al nombre del Directorio la hora en que se crea?

Si lo llamas "DirTmp", agregarle la hora en que se cree:
cFile:="DirTmp"+STRTRAN(TIME(),":","") lo cual te daria algo asi como "DirTmp013524" y dificilmente 2 personas crearan el mismo directorio en el mismo segundo.

Espero te sirva
Last edited by RodolfoRBG on Thu Jul 28, 2011 6:39 am, edited 1 time in total.
RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
User avatar
RodolfoRBG
 
Posts: 257
Joined: Tue May 16, 2006 4:46 pm
Location: San Luis Potosi, SLP, Mexico

Re: Carpeta de temporales

Postby Carles » Thu Jul 28, 2011 6:39 am

Diego,

En este escenario te vas a encontrar 2 situaciones.

1.- Varios usuarios conectados simultaneamente.Cada uno necesita su espacio temporal independientemente del otro. La solucion pasa por declarar i crear tu entorno para cada usuario. Puedes por ejemplo usar Sfn2Lfn(GetEnv( 'USERPROFILE' )) y te dara la carpeta del usuario conectado, pero entiendo que si te conectas remotamente siempre tendras el mismo usuario de la maquina.

2.- Aun asi, si te crearas tu el entorno en funcion del usuario que se conecte a tu aplicacion, en funcion del login, maquina, ..., existe otro problema: Que pasa si el usuario que se conecta lo hace mas de una vez desde la misma maquina ? Si tu aplicacion necesita su espacio temporal por cada sesion, la UNICA solucion pasa por crearte al Inicio de programa una carpeta individual temporal independiente de quien, como, cuando, desde donde, ... Yo me crearia al inicio de la app un nombre aleatorio de una carpeta y justo antes de salir de la aplicacion, se borran ficheros y carpeta.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Carpeta de temporales

Postby hmpaquito » Thu Jul 28, 2011 7:41 am

El uso de TS acelera, y mucho, el problema que puede tener una gestion inapropiada de creacion de temporales y que puede producir "choques" con otros usuarios/programa en el nombre del temporal.

Me explico: hay 2 formas de crear el temporal: usando un string "random" o bien basandose en una string que tenga un valor exclusivo (ejem. maquina+ handle del programa).

El problema para UTILIZAR la string "random" tiempo es que todos los usuarios tienen la misma hora, por tanto la hora no es buena estrategia.

A mi modo de ver, la estrategia pasa por utilizar cualquier factor de string, preferentemente random, y crear el temporal justo cuando se obtiene su nombre para asi "reservar" su nombre para que otro usuario no lo utilice.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Carpeta de temporales

Postby diegopolverelli » Thu Jul 28, 2011 12:55 pm

Muchas gracias por las respuestas. Voy a ver que puedo hacer, y despues les cuento. No me va a quedar mas remedio que laburar... Gracias de nuevo...!!!
diegopolverelli
 
Posts: 149
Joined: Thu Jun 21, 2007 3:26 pm

Re: Carpeta de temporales

Postby sysctrl2 » Thu Jul 28, 2011 9:51 pm

Bueno el uso de tablas temporales es un verdadero lio,

yo desde hace mucho opte por usar Arrays y todo perfecto.

Saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 951
Joined: Mon Feb 05, 2007 7:15 pm

Re: Carpeta de temporales

Postby Armando » Thu Jul 28, 2011 11:28 pm

Amigos:

Mis dos centavos, yo utilizo DBFs temporales nombradas con la hora en que se crean, ejemplo
Code: Select all  Expand view

cArchivo := "WW"+SUBSTR(TIME(),1,2)+SUBSTR(TIME(),4,2)+SUBSTR(TIME(),7,2)
 


Donde WW es el nombre del programa que lo crea, el resto ?, bueno creo que no necesita
explicación.

Hasta ahora no he tenido problemas de choques que aunque no es imposible es muy dificil
que mas de un usuario cree el archivo con el mismo programa a la misma hora, minutos y segundos.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 85 guests