Semaphore

veneur59 Messages postés 5 Date d'inscription lundi 2 février 2004 Statut Membre Dernière intervention 21 janvier 2005 - 30 avril 2004 à 19:00
XsatanaX Messages postés 122 Date d'inscription samedi 6 mars 2004 Statut Membre Dernière intervention 5 mai 2004 - 3 mai 2004 à 12:50
Existe-t-il un moyen sur utilisant php et éventellement
MySql de vérouiller une ressource quelconque (tables
MySQL, fichier, opération php de mise à jour, ...) de
façon que le serveur ne puisse exécuter à la fois
plus d'une occurence d'une section critique php?

J'envisage déjà 2 possibilités :

-- Style sémaphore : je verrouille et j'attend que
la ressource soit libre si c'est pas le cas (sans sortir
du script php).

-- Style Test&Set : je verouille et si c'était déjà occupé
je termine le script en demandant au navigateur de
réessayer automatiquement un peu plus tard (1 ou 2 secondes plus tard par exemple).

(La seconde solution éviterrait que l'exécution d'un
script dure trop longtemps à cause de l'attente de
la libération du sémaphore par un autre.)

3 réponses

XsatanaX Messages postés 122 Date d'inscription samedi 6 mars 2004 Statut Membre Dernière intervention 5 mai 2004
1 mai 2004 à 03:41
c pourquoi faire au juste???? car verouiller une ressource quelconque me semble pas possible, executer un script a un moment donnné la c'est oui..
0
veneur59 Messages postés 5 Date d'inscription lundi 2 février 2004 Statut Membre Dernière intervention 21 janvier 2005
3 mai 2004 à 11:55
En faite, les usages sont multiples et je cherchais une solution générique.

Exécuter un script à un instant donnée (exemple à 17H00, ce jour) m'interresse également. Ne pensant pas que c'était possible d'exécuter un script en dehors d'un événement autre que la lecture d'une page web par un Navigateur (ou autre client), je voulais faire en sorte de lancer le script de mise à jour quand serait effectuée la première requette après l'heure dite. (Donc vérifier si l'opération n'a pas déjà été faite, lire l'heure, faire l'opération puis mémoriser que
l'opération est faite.)

Mais comme l'état de la base ne sera pas stable pendant l'exécution du script, il ne faut pas que d'autre requette puisse avoir lieu pendant ce lapse de temps (si non gare aux bugs!)

Exemple: je commence par lire des donnée dans mes tables, je fais un calcul et je modifie ensuite mes tables en conséquence.

Il serait sans doute nécessaire pour traiter ce problème de connaitre les primitives php ou mysql (Primitives = Opérations non interruptibles qui ne peuvent donc être exécutés sur le serveur en même temps qu'une autre)
0
XsatanaX Messages postés 122 Date d'inscription samedi 6 mars 2004 Statut Membre Dernière intervention 5 mai 2004
3 mai 2004 à 12:50
ok,
http://www.onlinecron.com and get fun
0
Rejoignez-nous