Autor Zpráva
motik
Profil
Zdarec
mám takový problém.. Mám počítadlo, které si načte ze souboru číslo, přičte k němu 1 a vše poté uloží..
Jede to vpohodě, až na jeden malý detail.. Když dám rychle aktualozovat (vícekrát po sobě), tak se někdy přemaže a začne počítat odznova.. Dá se to nějak upravit, aby se to nepřemazávalo??


<?
$kolik = file_get_contents("soubor.dat");
$pricti = "1";

$soucet = $kolik + $pricti;

$fp = fopen("soubor.dat", "w");
fwrite($fp, $soucet);
fclose($fp);
echo "$soucet";
?>
Honza Hučín
Profil
http://www.dgx.cz/trine/item/atomicke-operace-se-soubory
Acci
Profil
Je tam problém s atomicitou operací. Řešení tohoto problému před nedávnem publikoval dgx: http://www.dgx.cz/trine/item/atomicke-operace-jeste-jednou
simka00
Profil
háček bude v řádku $fp = fopen("soubor.dat", "w"); - ten vždy nejprve vymaže obsah souboru a potom do něj zapíše. dělá se to myslím metodou "r+" a pomocí fce rewind, ale teď se mi to nechce vymýšlet, zkoušej :)
Acci
Profil
simka00
Ne, tím to ní. To je správně, že se obsah souboru vymaže a poté se do něj zapíše nová hodnota
Acci
Profil
motik
Místo
$pricti = "1";

$soucet = $kolik + $pricti;

bych použil raděj
++$kolik

Navíc 1 je číslo, proto nepatří do uvozovek
motik
Profil
Acci
jj.. jsem začátečník...
[Navíc 1 je číslo, proto nepatří do uvozovek]
motik
Profil
simka00
teď se mi to nechce vymýšlet, zkoušej :) --> lenochu :-) :-)
motik
Profil
nechcete mi to někdo napsat?? trápím se s tím a pořád nic.. :-(
Reznik
Profil
Ja to mel udelane takhle
Otevru soubor

<?
$fp = FOpen(soubor, "r"); //otevre pro cteni
$obsah = FRead($fp, FileSize(soubor)); // nacte obsah souboru
$Fclose(); // zavre soubor
$obsah++; //obsah souboru +1
$fp = Fopen(soubor, "w"); // otevre soubor a nastavi velikost na 0 popr. jej vytvori
FPutS($fp, $obsah); // vlozi cislo
FClose($fp); // zavre soubor
?>
Toto téma je uzamčeno. Odpověď nelze zaslat.

0