découper un cgi en rebol3 ?
rosanoff29-Mar-2015/7:27:18+2:00
Bonjour,
pour pouvoir me simplifier la vie je désire couper un cgi en deux :
la page cgi appelle par un "do load/header %agenda.txt" un fichier rebol qui récupère les données "POST" de la réponse su formulaire.
cela fonctionne très bien mais je me demande si deux pages qui exécutent en même temps la commande auront leur propre résultat ou un résultat commun ?
Merci par avance.
GreG29-Mar-2015/22:44:29+2:00
Hello,
Je ne suis pas certain de bien comprendre le scenario.
Peux tu détailler un peu plus?
Merci!
rosanoff30-Mar-2015/4:19:29+2:00
Bonjour,
en fait je me demande si deux personnes qui exécutent un même "do load/header %..." en même temps auront chacun une exécution séparer ou si il y aura une exécution unique pour les deux ?
J’espère avoir été un peu plus simple.
Merci par avance.
GreG30-Mar-2015/9:23:20+2:00
Je pense que potentiellement, la lecture de ce même fichier peut se faire en même temps.
Pour éviter cela, je te conseille d'introduire un fichier "lock" qui te permettra de vérouiller un accés exclusif.
C'est exactement ce qui est fait dans le code de ce forum, appel à lock avant de lire, et appel à unlock une fois lu.
Le lock contient un wait aleatoire afin que chaque accés concurrent puisse se débloquer le cas échéant.

lock: does [
    while [exists? join config/path-forum %.lock][wait divide random 10 10]
    write join config/path-forum %.lock ""
    threads: do read config/path-forum
    write/binary join config/path-backup rejoin parse to-string now/precise "-/:.+-" compress mold threads
]

unlock: does [
    delete join config/path-forum %.lock
]
GreG30-Mar-2015/9:31:22+2:00
J'ai fait un bete copier/coller et je m'aperçois que j'ai "factorisé" des traitements dans le lock, ci-dessous un code simplifié:

lock: does [
    while [exists? %access.lock][wait divide random 10 10]
    write %access.lock ""
]

unlock: does [
    delete %access.lock
]

rosanoff30-Mar-2015/13:57:51+2:00
Bonjour,
Merci pour la solution. Je la met en pratique.
Bon Dev. Cordialement

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2