Autor | Zpráva | ||
---|---|---|---|
MartinMM Profil * |
#1 · Zasláno: 13. 8. 2007, 23:00:20
Lidi, prosím, zkontrolujte mi tento kód. Funkce má být počítání kliknutí na jeden z 6 odkazů (docs.php) předáváním parametru $link a jejich zápis do řádků souboru (datclck.dat). Jednou za čas se mi soubor s hodnotami jakoby vyresetuje a počítá se odznova. Kde může být chyba?
docs.php: <?php define ("filename", "datclck.dat"); $fp = FOpen(filename, "r"); if ($fp) { if (($link >= 1) && ($link <= 6)) { $count = file(filename); FClose($fp); $count[$link-1] += 1; $count[$link-1] .= " "; $fp = FOpen(filename, "w"); for ($i = 0; $i <= 5; $i++) { FPuts($fp, $count[$i]); } FClose($fp); } else echo "Chyba! Takový odkaz neznám.<br /><a href='javascript:history.go(-1)'>Back (JS)</a>"; } switch ($link) { case 1: header('Location: http://odkaz1...)'); break; case 2: header('Location: http://odkaz2...)'); break; case 3: header('Location: http://odkaz3...)'); break; case 4: header('Location: http://odkaz4...)'); break; case 5: header('Location: http://odkaz5...)'); break; case 6: header('Location: http://odkaz6...)'); break; } ?> datclck.dat: 1 3 4 1 12 1 |
||
Alphard Profil |
#2 · Zasláno: 13. 8. 2007, 23:07:56
Jednou za čas se mi soubor s hodnotami jakoby vyresetuje a počítá se odznova. Kde může být chyba?
přiznám se, že jsem kód ani nečetl, ale vypadá to problém se současným přístupem více uživatelů podívej se na funkci flock(); nebo ještě lépe na databázi, ta je na tohle stavěná |
||
MartinMM Profil * |
#3 · Zasláno: 14. 8. 2007, 13:59:29
Taky mě to napadlo. Zkusím pohledat.
|
||
MartinMM Profil * |
#4 · Zasláno: 14. 8. 2007, 15:29:45
Stačilo by to takhle?
(předem říkám, že nejde o nějak extra důležitá data, ale nechci to obnovovat ze zálohy každý týden...) define ("filename", "datclck.dat"); $fp = fopen(filename, "r"); if ($fp) { if (($link >= 1) && ($link <= 6)) { $count = file(filename); FClose($fp); $count[$link-1] += 1; $count[$link-1] .= " "; $fp = FOpen(filename, "w"); flock($fp,LOCK_EX); for ($i = 0; $i <= 5; $i++) { FPuts($fp, $count[$i]); } flock($fp,LOCK_UN); FClose($fp); } else echo "Chyba! Takový odkaz neznám.<br /><a href='javascript:history.go(-1)'>Back (JS)</a>"; } ... |
||
Časová prodleva: 18 let
|
0