[HTML,JS,ActiveX] Accès concurrents (en R/W) à un fichier de données

Accès concurrents (en R/W) à un fichier de données [HTML,JS,ActiveX] - HTML/CSS - Programmation

Marsh Posté le 30-07-2002 à 13:59:45    

salut,
 
j'aurais voulu savoir s'il était possible en JS de gérer les accès concurrents (lecture/ecriture) sur un fichier. En fait, j'ai une petite "appli" sur un intranet qui peut être amenée à être utilisée par plusieurs utilisateurs en même temps (une 50aine). Et le souci, c'est que pour certaines fonctions, cette appli a accès à certains fichiers en modification, et je me demande comment ca se passe si un fichier doit être consulté pendant qu'un utilisateur le modifie. Car j'ai bien des tests genre If FileExists(path), mais quand quand qq'un est en train de modifier le fichier, je crois que le fichier est considéré comme existant, donc si un autre utilisateur veut l'utiliser en lecture, ca ne bloquera pas, et je crains le pire au niveau du résultat, non ?
 
Y-a t-il un moyen de faire attendre (le temps que les modifications liées au premier utilisateur soit enregistrées) alors l'utilisateur jusqu'à ce que le fichier soit lisibles ? (peut-etre avec les try...catch, mais je ne vois pas bien comment)
Ou bien, ce genre de situation ne pose t-elle aucun problème (j'en doute fortement) ?
Le souci étant que je ne peux pas tester ce problème puisque l'intervalle de temps qu'il y a entre la modification du fichier et une éventuelle consultation simultanée de ce même fichier est tellement court que si ca devait se produire, ca serait dû au hasard, mais comme il y a une 50aine d'utilisateur, ca doit pouvoir arriver...
Pour info car je pense pas que ca change grand chose, les fichiers sont de simples fichiers txt qui contiennent des index de references (pour des recherches croisées)
 
Mon explication est-elle limpide ou pas ? :D
Merci d'avance...


Message édité par seb91 le 30-07-2002 à 14:47:59
Reply

Marsh Posté le 30-07-2002 à 13:59:45   

Reply

Marsh Posté le 30-07-2002 à 14:12:48    

Heu, tu confondrais pas Javascript et Java toi ?

Reply

Marsh Posté le 30-07-2002 à 14:15:26    

pkoi je confondrais ? (je vois pas l'allusion)
Est-ce que mon souhait est carrément pas réalisable avec Javascript ?
Si c ca, alors dis le moi franchement :D que je compte plus dessus  :(

Reply

Marsh Posté le 30-07-2002 à 14:26:41    

Ben le JavaScript ça sert pas à faire des applis partagées, ça ne permet pas d'accéder aux fichiers, etc...
 
C'est de Java dont tu parles.
 
Quoiqu'il en soit, en Java toutes les opérations d'entrées/sorties doivent être dans un try { ... } catch { ... ) et donc tu sauras assez vite si ton fichier ne peut pas être accédé par plusieurs personnes en même temps.

Reply

Marsh Posté le 30-07-2002 à 14:30:10    

gm_superstar a écrit a écrit :

Ben le JavaScript ça sert pas à faire des applis partagées, ça ne permet pas d'accéder aux fichiers, etc...
 
C'est de Java dont tu parles.
 
Quoiqu'il en soit, en Java toutes les opérations d'entrées/sorties doivent être dans un try { ... } catch { ... ) et donc tu sauras assez vite si ton fichier ne peut pas être accédé par plusieurs personnes en même temps.




hein ?? je vous comprends pas la...
En javascript, au moyen de contrôles ActiveX (en l'occurence FileSystemObject), tu accèdes aux fichiers sans soucis (lecture, modif, suppr...), ya pas d'applets Java ni autre composant Java sur mon site :)
 
et je crois avoir deja vu utiliser des try...catch également en javascript... d'ou ma question pour essayer de résoudre ce problème en Javascript :)

Reply

Marsh Posté le 30-07-2002 à 14:39:33    

Ah ben si tu ne dis pas tout aussi... Les contrôle ActiveX, c'est des contrôles ActiveX, pas du JavaScript. Je te conseille de changer le titre de ton topic et mettre ActiveX au lieu de HTML,JS.
 
Mais je ne connais pas ActiveX donc je ne peux pas t'aider plus sur ce point.

Reply

Marsh Posté le 30-07-2002 à 14:47:31    

gm_superstar a écrit a écrit :

Ah ben si tu ne dis pas tout aussi... Les contrôle ActiveX, c'est des contrôles ActiveX, pas du JavaScript. Je te conseille de changer le titre de ton topic et mettre ActiveX au lieu de HTML,JS.
 
Mais je ne connais pas ActiveX donc je ne peux pas t'aider plus sur ce point.



je suis pas complètement d'accord avec toi la. Selon moi activeX, c un peu comme utiliser un .h (ou une librairie) quand tu fais du C.
Mes controles ActiveX, je les utilise dans mes scripts, et c'est bien du JS... enfin bon, passons, c'est pas le problème  :D , comme tu me le conseilles, je vais rajouter ActiveX dans le titre...

Reply

Marsh Posté le 30-07-2002 à 15:07:39    

je ne comprends pas le problème. si tu connais filesystemobject & co, tu regardes les codes d'erreurs / exceptions que ses méthodes renvoient et tu agis en conséquence. sous windows, un fichier ouvert en écriture ne peut être que lu, voire pas accédé du tout si l'application qui l'ouvre veut tous les droits dessus.  
 
bref, tu fais une fonction basique save(), qui teste le code d'erreur / utilise un try/catch et se rappelle (par exemple) 1 seconde plus tard (avec setTimeout()) pour rétenter l'accès.

Reply

Marsh Posté le 30-07-2002 à 15:08:46    

seb91 a écrit a écrit :

Mes controles ActiveX, je les utilise dans mes scripts, et c'est bien du JS...


et sur le forum, ça donne des gens qui posent des questions à propos de delphi alors que leur question est algorithmique ... faut séparer un minimum.

Reply

Marsh Posté le 30-07-2002 à 15:17:52    

youdontcare a écrit a écrit :

et sur le forum, ça donne des gens qui posent des questions à propos de delphi alors que leur question est algorithmique ... faut séparer un minimum.  




desolé, je n'y ai pas pensé  :sweat:
cela ne se reproduira plus  ;)  
 
sinon, merci pour ta réponse, mais justement mon souci, c par rapport à ces codes d'erreurs et à l'utilisation du try...catch que je n'ai pas assimilé à fond. (et c'est là ou je ne comprends pas vos réactions parce que ca, c'est bien du JS, mais je m'excuse malgré tout de ne pas avoir été clair à ce sujet  :) )


Message édité par seb91 le 30-07-2002 à 15:20:55
Reply

Marsh Posté le 30-07-2002 à 15:17:52   

Reply

Marsh Posté le 30-07-2002 à 15:37:19    

je vois toujours pas le problème :D tu regardes les objets http://msdn.microsoft.com/library/ [...] Object.asp et leurs codes d'erreurs. si ça balance une exception, tu fais :
 
try
{
  // la méthode
}
catch (e)
{
  // e est l'exception, que tu peux énumérer avec le for (i in e) alert (i + ' ' + eval('e.' + i));
}
 
tu regardes ce que ça renvoie, et tu te débrouilles avec ...
 
:??:

Reply

Marsh Posté le 30-07-2002 à 15:45:53    

ok merci :)
justement, mon souci comme je l'ai mis dans le premier post, c l'utilisation éventuelle du try...catch que je n'ai jamais utilisé et que je ne connais pas... et surtout que je ne voyais pas comment l'utiliser dans mon cas.
 
mais bon, comme tu me dis que c faisable et avec tes explications, je vais donc essayer de me pencher plus sérieusement sur le problème.
Merci

Reply

Marsh Posté le 30-07-2002 à 15:59:05    

haa !
 
mais c'est tout simple :)
 
http://www.devguru.com/Technologie [...] catch.html ... merci [:google2]

Reply

Marsh Posté le 30-07-2002 à 16:32:08    

youdontcare a écrit a écrit :

haa !
 
mais c'est tout simple :)
 
http://www.devguru.com/Technologie [...] catch.html ... merci [:google2]




bah oui, mais moi aussi je peux dire merci [:google2]
 
J'ai fais une recherche avant...  :jap:  
mais justement à chaque fois, c'était à peu près cette exemple, et je ne comprenais pas comment faire en sorte, que quand il rencontre l'erreur, il réessaie l'instruction 1 seconde après (par exemple). Et en fait, je viens de réaliser qu'avec le while, je pourrais le faire sans trop de problème en imbriquant le try...catch dans mon while (ce que je n'avais pas réaliser avant).
En tout cas, merci pour ce lien, ca m'a permis de voir à quoi servait throw :)
:hello:


Message édité par seb91 le 30-07-2002 à 16:32:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed