2010-06-14 11 views
3

Est-il possible de verrouiller un fichier pour l'empêcher d'être ouvert alors que la bibliothèque GD y accède? Ce que je cherche à réaliser est similaire à un niveau d'isolation de base de données 'serialzable' ... Je veux m'assurer qu'une seule session/utilisateur puisse accéder à une image à la fois pour arrêter une 'sale lecture'.Arrêter plusieurs sessions accédant simultanément au même fichier

Mon application permet aux utilisateurs d'ajouter une image de choix à une image plus grande.

par exemple

  • la grande image est vide
  • Raj & Janet télécharger leurs images session de
  • Raj ouvre la grande image.
  • 1 ms plus tard La session de Janet ouvre la grande image.
  • son image de l'ajout de la session de Raj et enregistre la grande image
  • 1 ms après la session de Janet ajoute son image et enregistre sa version de la grande image. Par conséquent, l'image de Raj n'est pas dans l'image finale que la version de Janet l'a écrasée.

J'espère que cela le rend assez clair.

+0

Merci pour les votes! – Pablo

Répondre

2

Découvrez flock. Vous pouvez verrouiller le fichier avec lequel vous travaillez ou créer un "fichier de verrouillage" ailleurs dans le système de fichiers que tous vos scripts vérifient.

+0

Il a l'air parfait, ma seule crainte est que si un fichier est verrouillé pour toujours ... Y at-il un moyen de se prémunir contre cela? – Pablo

+0

Le verrou est libéré lorsque le fichier est fermé, de sorte que le seul problème serait que votre processus se bloque sans se fermer (c'est-à-dire devient un processus zombie). –