Kann mir denn keiner helfen?

Feldhofe

Erfahrenes Mitglied
Es geht immer noch um diese Flock-Geschichte!

PHP:
    $datei = file("counter.txt");
    $open = fopen("counter.txt", "w+");
    $bfile[1]=$bfile[1]+1;
    $datei[0] = "heute|$bfile[1]|$tagmonat\n";
    foreach($datei as $val)
    fputs($open, "$val");
    fclose($open);

Ich will statt dieses Scriptes eines einsetzten, das dasselbe mit FLOCK macht.

Das sollte doch ganz einfach sein, oder?
Ich begreif flock das einfach nicht, sorry!

Gruß Feldhofe
 
Wie, statt

$open = fopen("counter.txt", "w+");


einfach nur $open = flock("counter.txt", "w+");

???

Das ist alles? Ich denke, ich muß da irgendwelche Werte für die Sperrzeit und sonsitige Attribute einstellen??
 
nee so ...

$open = fopen("counter.txt", "w+");
$lock = flock($open,2);

flock kann nur verhindern das mehrere scripts auf die datei gleichzeitig zugreifen ...

mehr macht das ding nicht ...

rest bleibt wie gehabt...

flock gibt true wenn datei frei ist ...
die zahl hinten gibt an was du überwachen möchtes ..

in meinem fall schreiben
 
Zuletzt bearbeitet:
Aha! Danke.
Also sieht das Script jetzt so aus:

$datei = file("counter.txt");
$open = fopen("counter.txt", "w+");
$lock = flock($open,2);
$bfile[1]=$bfile[1]+1;
$datei[0] = "heute|$bfile[1]|$tagmonat\n";
foreach($datei as $val)
fputs($open, "$val");
fclose($open);

Und damit ist gut? Die Variavle §lock wird also demnach nirgends mehr so verwendet, oder habe ich das falsch verstanden?

Danke nochmal!
Gruß Feldhofe
 
jetzt gehts ins eingemachte :-)

wenn das php script von 2 usern gleichzeitig ausgeführt wird dann kann es ja beim schreiben in deine datei zu problemen kommen ..

also sollte ein user warten :-)

$open = fopen("counter.txt", "w+");

while (flock($open,2) == false)
{};

wenn man es so schreibt bleibt ja user 2 solange in der whileschleife gefangen bis user 1 mit schreiben fertig ist ...


NACHTRAG:

ich habe es fast verpennt .. vorm fclose befehl
muss mit flock($open,3);
der lock wider aufgehoben werden
sonst wartet der 2 user sich zu tode ....
 
Zuletzt bearbeitet:
Cool!
Also sind wir hierbei:

$datei = file("counter.txt");
$open = fopen("counter.txt", "w+");
while (flock($open,2) == false)
{
}
$bfile[1]=$bfile[1]+1;
$datei[0] = "heute|$bfile[1]|$tagmonat\n";
foreach($datei as $val)
fputs($open, "$val");
fclose($open);

So setzte ich das jetzt also in die Datei ein, richtig? Und wenn ich jetzt die 2., 3. oder 4 Anweisung habe, mache ich dann wieder genau das gleiche??

Feldhofe
 
Siehe mein Nachtrag im Post !!!

von vorhin :-)

Nachtrag zum Nachtrag habe nochmal nachgelesen ..

flock geht nicht bein win systemen !!
 
Zuletzt bearbeitet:
Zurück