Réponse acceptée !
Tu te trompes... le lock des fichiers dépend bien des systèmes
d'exploitation... donc il se pourait dans la vie de tous les jours
qu'un système d'exploitation ne supporte pas le lock.
En php, si tu ne lock pas, un fichier peut très bien être accedé en lecture ET/OU écriture !!!
Essais ceci :
a.php
<?php
$fp = fopen('test.txt','a+');
fwrite($fp,'salut1'."\n");
sleep(15);
fwrite($fp,'rien1'."\n");
fclose($fp);
?>
b.php
<?php
$fp = fopen('test.txt','a+');
fwrite($fp,'salut2'."\n");
sleep(15);
fwrite($fp,'rien2'."\n");
fclose($fp);
?>
Fait fonctionner a.php et ensuite (avant 15 secondes), b.php
Ton fichier test.txt contiendra ceci :
salut1
salut2
rien1
rien2
Surpris ? (Test avec apache1 ou apache2... le résultat sera le même)
Donc peut importe les threads ou pas... Le fichier n'est pas bloqué !
C'est pourquoi si tu veux VRAIMENT bloquer ton fichier tu dois utiliser
flock ou, tu arrêtes d'utiliser les fichiers et tu passes à base de
données :P
PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
[ Lien ]