Bonjours, je voudrais savoir s'il existerai la possibilité de créer des variables que tous les utilisateurs du site peuvent utilisés ? Après avoir rechercher j'ai rien trouver de semblable :?
Version imprimable
Bonjours, je voudrais savoir s'il existerai la possibilité de créer des variables que tous les utilisateurs du site peuvent utilisés ? Après avoir rechercher j'ai rien trouver de semblable :?
Salut,
tu ne peux pas stocker tes variables dans un fichier php tout simplement ?
Hé bien l'idée serait de créer un sémaphore pour limiter l'acces à un fichier et ainsi éviter des erreurs lors de la sauvegarde. Donc je voulais savoir si on pouvait créer des sortes de super variables stockées en mémoire et accessible par tous, un boolen suffirait.
Tu pourrais utiliser la fontion flock() qui permet de verrouiller l'accès a un fichier peut etre?
http://www.php.net/manual/fr/function.flock.php
Ouaip sa pourrai être pas mal mais le problème c'est que j'utilise des fonctions DOMs pour ouvrir et manipuler les fichiers XML, et comme je n'utilise pas FOPEN je n'ai pas de HANDLER retourné donc je ne peut pas utiliser cette fonction avec mon XML :? mais merci quand même car je ne connaissai pas cette fonction utile :o
en stockant en base de données alors ?
Bé ca va faire beaucoup d'accès car un sémaphore doit être vérifié en boucle jusqu'a sa libération par un autre utilisateur, il n'existe vraiment pas de variable serveur ou global accessible par tous ?
Exemple :
L'attribut domfile est une variable de classe DomDocument.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 while ( VARIABLE_GLOBALE != TRUE ) { VARIABLE_GLOBALE = FALSE; /*Vérification avant sauvegarde pour éviter une erreur pouvant supprimer l'intégralité du fichier.*/ if ( $this->domfile->save("xml/biography/biogbackup.xml") != FALSE ) { //Sauvegarde du fichier XML. $this->domfile->save("xml/biography/biography.xml"); VARIABLE_GLOBALE = TRUE; } else { echo "Erreur lors de la sauvegarde du fichier biographique XML."; } }
- Les sémaphores sont disponibles sous PHP, après c'est une question d'environnement (possible ou non, actif ou non).
- Les variables d'environnement peuvent être modifiées mais n'affectent que le script courant d'après la documentation.
- Pourquoi ne pas créer un fichier verrou ?
Dans le ou les autres scripts il vous suffit de vérifier s'il existe (fonction file_exists ou is_file).Code:
1
2
3
4
5
6
7
8
9
10
11 define('VERROU', '/tmp/verrou_dom.lock'); $fp = fopen(VERROU, 'w'); // clearstatcache(); // PHP met en cache les informations obtenu par (l)stat flock($fp, LOCK_EX); /* Votre traitement ici */ flock($fp, LOCK_UN); fclose($fp); unlink(VERROU); // clearstatcache();
Les sémaphores ne sont pas utilisable sous windows :( lol je suis pas étonné, mais j'ai opter pour créer un fichier de contrôle qui est verrouillé lors de la sauvegarde avec flock() :)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 /*Méthode privée permettant de sauvegarder le fichier XML de manière sécurisée.*/ private function saveFile() { /*On pose un verrou d'écriture pour éviter des écritures multiples pouvant créer des erreurs.*/ while ( flock( $this->filelock, LOCK_EX ) == FALSE ) {} /*Vérification avant sauvegarde pour éviter une erreur pouvant supprimer l'intégralité du fichier.*/ if ( $this->domfile->save("xml/product/productbackup.xml") != FALSE ) { /*Sauvegarde du fichier XML.*/ $this->domfile->save("xml/product/product.xml"); } else { echo "Erreur lors de la sauvegarde du fichier XML des produits."; } /*On libére le verrou du fichier.*/ if ( flock( $this->filelock, LOCK_UN ) ) { return TRUE; } else { return FALSE; } }