PHP nous permet d'utiliser le drapeau x
lorsque vous faites fopen:PHP fopen (drapeau x) garanti pour fonctionner seulement une fois?
Créer et ouvert en écriture seule; Placez le pointeur de fichier au début du fichier.
Si le fichier existe déjà, fopen() appeler échouera en retournant FALSE et générer une erreur de niveau E_WARNING .
Si le fichier n'existe pas, essayez de le créer. Cela équivaut à en spécifiant des indicateurs O_EXCL | O_CREAT pour l'appel système open (2) sous-jacent.
Est-ce que cela signifie que peu importe combien de demandes simultanées fopen que nous avons (de différents utilisateurs), il est garanti que le fichier ne sera créé une fois et jamais écrasés?
if ($handle = fopen("part006", "x+b")) {
do_some_processing();
echo "You managed to process.";
/*
can we guarantee that only 1 user (http request)
will ever process the function and see the
message "you managed to process" ?
*/
} else {
echo "You failed to process.";
}
Est-ce que l'exclusivité est garantie pour Windows? – Pacerier
Je ne suis pas sûr (mais il est probable) .. Essaiera de trouver cette information .. (malheureusement 'man' ne fonctionne pas sur Windows;)) – hek2mgl
@Pacerier Lire une liste de diffusion et il semble que cela ne fonctionnera pas sur les fenêtres. mais je ne suis pas sûr car je n'ai actuellement aucune fenêtre pour tester. pouvez-vous tester? Si cela ne fonctionne pas, alors vous devriez utiliser 'flock()' dans ce but. Ce n'est pas la même chose, mais cela pourrait vous aider (vous ne connaissez pas les besoins de votre application). Notez ma réponse à cette [question] (http://stackoverflow.com/questions/15305296/how-to-use-flock- in-php/15305346 # 15305346) qui est lié 'flock()' et peut aider – hek2mgl