Gondjaim a vannak a file-ba mentessel
Keszitek egy honlapot, elhelyeztem benne egy szamlalot ami szamolja a latogatok szamat. Ez PHP-be van irva szepen ki is irja azt az erteket ami a kezdo ertek(*.txt-be van tarolva). De a az ertek+1-et mar nem irja bele a file-ba es igy mindig a kezdo erteket irja ki.
Mi lehet a gond???
Valahol be lehet allitani azt hogy a *.txt legyen irhato es olvashato is(rw)??
Koszonom elore is a segitseget
■ Mi lehet a gond???
Valahol be lehet allitani azt hogy a *.txt legyen irhato es olvashato is(rw)??
Koszonom elore is a segitseget
Gondold végig...
"Ennyi meg egy bambi"
TikuVoltam
Meg igy sem megy
Szerinted helyes a kod:
<?php
$File = "szamol.txt";
chmod($File, 0755);
if (file_exists($File))
{
$fp = fopen($File,"r+");
$num = fread($fp, filesize($File));
$db = ord($num);
$db = $db + 1;
echo("Látogatók száma: <B>" . $db . "</B>.");
fwrite($fp, $db);
fclose($fp);
}
?>
ord minek?
Azt is próbáltad, hogy egyszer megnyitod a szamol.txt-t csak olvasásra, elteszed a tartalmát, bezárod, megnyitod megint írásra, és visszaírod az egyel növelt értéket (
$db = (int)$num+1;
)?ord minek?
Azt is próbáltad, hogy egyszer megnyitod a szamol.txt-t csak olvasásra, elteszed a tartalmát, bezárod, megnyitod megint írásra, és visszaírod az egyel növelt értéket (
$db = (int)$num+1;
)?kölcsönös kizárás
És ha többen használják, akkor ez a megközelítés simán rossz eredményre vezethet. Ilyen esetekben meg kell valósítani, hogy a közösen használt erőforrást ne tudja két kiszolgáló folyamat egyszerre olvasni/írni.
Felhő
Igaz
Talán az 5. hozzászólásban vázolt módszerrel a közös használat is elkerülhető.
TikuVoltam
Ez mit oldana meg?
Felhő
megint igaz
Ez így már jó megoldásnak? vagy adjunk a kérdezőnek "egy lézerszikét kenyérvágáshoz"? Mindekettővel fel lehet szeletelni a kenyeret... :)
TikuVoltam
mikor mire van szükség
A szöveges fájlnak is megvan a létjogozultsága. Pl. cache-eléskor is jól jöhet. Ilyenkor is figyelni kell a kölcsönös kizárásra, de itt csak az írást kell szinkronizálni, ami jelen esetben egy kis trükkel (fájlátnevezés) meg lehet könnyedén oldani.
Ha most neki épp csak látogatók számának tárolása lenne a fontos, akkor csak emiatt DB-t használni lenne a "lézerszike".
Felhő
Jogok?
- Linux alatt CHmod. Azt hiszem, a PHP a webszerver jogosultságaival fut.
- Windows alatt elvileg nincs gond.
win
írásjog
x
De webszervert azért ne csináljunk belőle.
mégez
üdv
BL
Az egyszerű meglodás :D
Itt egy elég rövid megoldás a gondodra, régen én is ezt használtam, csak az óta már adatbázisban tárolom az ilyen adatokat (is)...
$file = "counter.tmp";
$handle = fopen($file, "r");
$counter = fread($handle, filesize($file));
fclose($handle);
$counter++;
$handle = fopen($file, "w");
fwrite($handle, $counter);
fclose($handle);
ennyi. a $counter változó tartalmazza a számod, ezt utána egy echoba bedobod, akkor a kiírás is meg van oldva. Lényegében így a fájlodban egyetlen egy szám fog szerepelni. De kezdésként írj bele egy nullát vagy egyet (vagy ha csalni akarsz akkor pl 43526-ot :D)
üdv: eXeCUTor
Hibás megoldás