Documentation
Helper Lock
Table des matières ▼
Présentation
Helper servant à verrouiller l'accès à un fichier. Si aucun fichier n'est spécifié, c'est le script PHP en cours d'exécution qui sera verrouillé.
L'objet peut être appelé de deux manières différentes, soit en l'instanciant classiquement, soit en
faisant appel à des méthodes statiques.
Chaque solution s'utilise de manière différente :
- Instanciation : Par défaut, le verrouillage est bloquant (si le fichier est déjà verrouillé, l'objet attend qu'il soit libéré pour le verrouiller à son tour, puis rendre la main). Pour déverrouiller le fichier, il faut détruire l'instance de l'objet.
- Appels statiques : Par défaut, le verrouillage est non bloquant (si le fichier est déjà verrouillé, la fonction retourne false immédiatement). Pour déverrouiller le fichier, il faut appeler une autre fonction statique, en lui fournissant de nouveau le chemin du fichier qui était verrouillé.
Les fichiers encore verrouillés à la fin de l'exécution du script sont automatiquement déverrouillés. Il n'est donc pas toujours nécessaire de les déverrouiller explicitement.
Appels statiques
La manière la plus simple de verrouiller (de manière non bloquante) l'exécution d'un script est d'écrire le code suivant :
use \Temma\Utils\Lock as TµLock;
if (!TµLock::lock()) {
// le programme est déjà en cours d'exécution
exit();
}
// reste du script
Pour verrouiller un fichier spécifique de manière bloquante, et le déverrouiller plus tard :
use \Temma\Utils\Lock as TµLock;
TµLock::lock('/chemin/vers/fichier', true);
// ... code applicatif
TµLog::unlock('/chemin/vers/fichier');
Instanciation
Pour verrouiller de manière bloquante l'accès à un fichier, et le déverrouiller plus tard :
use \Temma\Utils\Lock as TµLock;
// verrouillage du fichier
try {
$lock = new TµLock('/path/to/file');
} catch (\Temma\Exceptions\IO $eio) {
// il y a eu une erreur
}
// ... utilisation du fichier
// déverrouillage
unset($lock);
Pour verrouiller l'accès à un fichier de manière non bloquante, et le déverrouiller plus tard :
use \Temma\Utils\Lock as TµLock;
// verrouillage du fichier
try {
$lock = new TµLock('/path/to/file', false);
} catch (\Temma\Exceptions\IO $eio) {
// il y a eu une erreur
} catch (\Temma\Exceptions\Application $ea) {
// le fichier est déjà verrouillé
}
// ... utilisation du fichier
// déverrouillage
unset($lock);
Précédent : | Helper Json |
Suivant : | Helper Registry |
Table des matières
- Migration : Comment passer de Temma 1.x à la version 2
- Installation : Télécharger Temma et l'installer pour démarrer votre projet Web
- Configuration : Toutes les directives de configuration du fichier etc/temma.json et les variables d'environnement utilisables en option
- Bibliothèques externes : Comment utiliser des bibliothèques de fonctions externes
- Routage : Le système de routage par défaut de Temma, et le routage avancé
- Log : Utilisation du système de log, gestion par niveaux de criticité
- Contrôleurs : Pièces essentiels de votre application Web
- Vues : Templates Smarty ou exports JSON/CSV/RSS/iCal/INI
- Injection de dépendances : La colonne vertébrale de vos développements applicatifs
- Sessions : Extension des sessions utilisateurs gérées par PHP
- Sources de données : Pour gérer l'accès aux données de manière unifiée
- Modèle : Comment utiliser les DAO pour accéder aux bases de données
- Flux d'exécution : Comment gérer le flux d'exécution, entre les plugins et le contrôleur
- Plugins : Comment utiliser les plugins, et écrire les vôtres pour modulariser votre code
- Attributs : Comment filtrer l'accès aux contrôleurs et aux actions
- Tests : Pour écrire des tests d'intégration automatisés.
- Interface en ligne de commande : Pour créer des scripts exécutables en ligne de commande, initialisés automatiquement par Temma
-
Helpers :
Objets proposés par Temma pour vous aider dans plusieurs circonstances
- Scripts en ligne de commande
-
Contrôleur + plugin
- Auth : Contrôleur et plugin servant à gérer l'authentification des utilisateurs
- Plugins
- Attributs
-
Plugins Smarty
- urlize : Modificateur transformant un texte en URL
- filenamize : Modificateur transformant un texte en nom de fichier
- nbsp : Modificateur transformant des espaces en espaces non sécables
-
Objets utilitaires
- ANSI : Pour mettre en forme les textes écrits sur la sortie standard
- BaseConvert : Pour faire des conversions de bases numériques
- DataFilter : Pour filtrer et valider des données
- Email : Pour envoyer des emails
- HTMLCleaner : Pour nettoyer un flux HTML provenant d'un éditeur WYSIWYG
- IniExport : Pour exporter des données au format INI
- Json : Pour lire des flux JSON pouvant contenir des commentaires
- Lock : Pour verrouiller l'accès à un fichier, ou l'exécution du script PHP courant
- Registry : Pour stocker proprement des variables globales
- Smarty : Pour traiter des templates Smarty en dehors de la vue
- Term : Gestion des terminaux (TTY)
- Text : Différents traitements sur les chaînes de caractères
- Timer : Pour gérer des chronomètres