webForumDet fria alternativet

flock()?

5 svar · 232 visningar · startad av Poppe25

Poppe25Medlem sedan apr. 2002278 inlägg
#1

Om jag har en fil på en server som kommer att läsas och skrivas till av många klienter, hur kan jag då garantera att inga kollisioner uppstår genom att någon läser samtidigt som någon annan skriver?

Har fått tips på flock(), men skulle gärna se ett exempel på hur funktionen kan ordna så att när någon skriver till filen så får andra vänta med att läsa den? Att många läser samtidigt är inget problem.

Poppe25Medlem sedan apr. 2002278 inlägg
#2

Är detta rätt sätt?

KOD:
-----------------------------------------
/*
Lås filen för exklusiv access
*/
flock( 'minFil.php', 2 );

.... Data skrivs till filen.....

/*
Lås upp så andra kan accessa
*/
flock( 'minFil.php', 3 );
-----------------------------------------
1 = shared
2 = exclusive
3 = release
+4 = no block

Poppe25Medlem sedan apr. 2002278 inlägg
#3

Men om jag låser filen medan en klient skriver till den....vad händer med en annan klient som försöker läsa från filen men misslyckas? Kommer denne att vänta och försöka på nytt per automatik eller kommer denna att ropa till och säga att läsningen misslyckades?

Alpha IIMedlem sedan maj 20002 579 inlägg
Poppe25Medlem sedan apr. 2002278 inlägg
#5

Manualen är inte riktigt tydlig. Jag lyckas inte få fram huruvida man ska låsa filen innan man öppnar den eller tvärt om. Detsamma med när man ska stänga den.

Hittar inte heller hur man ska göra med klienter som vill läsa ifrån filen medan någon skriver till den.

Vore tacksam för hjälp av någon som kan.

SilodonMedlem sedan juli 20035 inlägg
#6

Poppe25 skrev:

Men om jag låser filen medan en klient skriver till den....vad händer med en annan klient som försöker läsa från filen men misslyckas? Kommer denne att vänta och försöka på nytt per automatik eller kommer denna att ropa till och säga att läsningen misslyckades?

Prova ! Jag tror ju att den kommer ropa.

Genererad på 387 ms · cache AV · v20260730165559-full.f96bc7eb