begin process at 2012 05 30 20:48:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Flock()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Flock()

mercredi 12 janvier 2005 à 10:57:19 | Flock()

sidhannowe

Salut, Je développe un script se servant de fichiers texte pour stocker des données. Le problème est que si 2 script accède en meme temps au meme fichier, il risque d'y avoir perte de données ? Dois-je alors utiliser la fonction flock() ? Merci pour vos réponses
mercredi 12 janvier 2005 à 11:50:25 | Re : Flock()

malik7934

Un fichier ne peut pas être ouvert en écriture par deux programmes en même temps, c'est une question de concurrence. Il peut y avoir milles lecteurs simultanés (même pendant une écriture) mais un seul qui écrit...
mercredi 12 janvier 2005 à 12:15:17 | Re : Flock()

sidhannowe

Ok donc quoi que je fasse dans mon programme, PHP assure derrière qu'aucune donnée ne soit perdue ?
mercredi 12 janvier 2005 à 12:25:02 | Re : Flock()

malik7934

Je suis pas un spécialiste php, mais je crois qu'en principe les scripts sont exécutés un à un, une requête à la fois et il n'y a donc pas à s'inquiéter de la concurrence.
mercredi 12 janvier 2005 à 14:17:39 | Re : Flock()

GRenard

Quoi faire ?
 - passer à les bases de données...
 - Utiliser flock()...

malik, depuis Apache2, le serveur gère les requêtes avec des threads... plusieurs scripts peuvent fonctionner en même temps !


PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
[ Lien ]
mercredi 12 janvier 2005 à 14:21:25 | Re : Flock()

malik7934

Salut GRenard, merci pour l'info.

Ceci dit, ça n'empêche normalement pas qu'un fichier ouvert en écriture par un process ne peut l'être par un autre non? C'est un principe de base en concurrence et systèmes d'exploitation et ça m'étonnerait un peu que PHP ou Apache échappent à cette règle... ou je me trompe? T'as un contre-exemple si je me trompe?

Thanx, Malik7934
mercredi 12 janvier 2005 à 18:02:02 | Re : Flock()

GRenard

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 ]
mercredi 12 janvier 2005 à 18:06:58 | Re : Flock()

malik7934

Je trouve ça totalement incroyable! Alors qu'on nous a rabattu aux cours de systèmes d'exploitation qu'on ne peut faire W/W, tu me montres le contraire !!!
J'aurais appris quelque chose today ;o)
mercredi 12 janvier 2005 à 18:16:36 | Re : Flock()

sidhannowe

Merci pour ta réponse renard, si je n'utilise pas de bdd c'est que y'a bien une raison ;-) Mon script pouvant être amené à subir beaucoup d'appels en peu de temps, il faut que j'utilise flock lors d'opération d'écriture.
mercredi 12 janvier 2005 à 18:20:02 | Re : Flock()

GRenard

Choisi réponse acceptée pour celles qui t'interessent !

Il y a pleins de systèmes d'exploitation qu'y n'ont pas le système e lock (donc flock ne marcherait pas, mais php doit l'émuler au pire)
Mais du lock comme je dis, il y a des systèmes qu'y ne le font pas ! comme par exemple le système d'exploitation TiniOs qui fonctionne sur de super machine à dual processor 18Mhz :P ne le fait pas (ca ctait notre cours :P)


PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
[ Lien ]


Cette discussion est classée dans : script, données, flock


Répondre à ce message

Sujets en rapport avec ce message

effacement dans la base de données [ par la_luciole ] Bonjour,je souhaiterai trouver un script qui permette d'effacer des infos automatiquement dans la base de données à partir d'une date clé.Je m'expliqu script utilisant fopen et compagnie HELP [ par ziziboss ] Voilàje veux créer un script genre un formulaire qui sera transmi dans une premiere base de donnée et sera relu pour être ranger par catégorie dans un cherche script pour transfere un fichier de données .txt sur une base mysql [ par ma_pomme ] Bonjour, Voila j'utilise un petit programme qui genere un fichier .txt qu'il utilise comme une base de données. J'aurai souaité le transfere vers une script complet pour supprimer des donnés de la base de données [ par aidabeach ] slt,j veux un script qui permet de supprimer des données de la basemerci. gestion table base de données [ par redex01 ] salut tout le monde je suis à la recherche d  un script qui permet de gérer une table ( ajout, modification, suppression ) en affichant des images ass Comment passer des variables d'un script a un autre [ par badind ] Bonjour,J'avais un site écrit en php3 ( http://badind.chez-alice.fr/RandoGl ), mais le Fai vient de passer en Php5. Le transfert de données entre scri Connaitre la taille de toutes mes base de données (via table_schema) [ par hdh ] Bonjour Je piétine sur un script pour calculer le volume occupé par mes bases de données sur mon hébergement. J'ai en effet plusieurs bases de données quelle methode pour recuperer des données sur un site [ par nildv ] Bonjour,Je dois coder un script qui permette de recuperer des données sur un site https.Il faut savoir que le lien qui va lancer mon script se trouver Liens dans script php [ par pronostic ] Bonjour à tous. Je souhaiterais afficher des données provenant d'une table. Mon affichage est en tableau. Comment faire pour que toute les données d'u Aide pour 1 script [ par karim88 ] Bonjour, je suis vraiment en difficulté. J'aurai besoin d'1 script simple pour faire suivant/précédent sur des données d'une base de données dans une


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,168 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales