Avaleht
uus teema   vasta Tarkvara »  WWW »  text statistika märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 04.05.2009 20:53:07 text statistika vasta tsitaadiga

Tegin omale lihtsa statistika proge, mis loeb lehtede külastusi. Andmed talletan faili. Kuid on selline viga, et aegajalt kustub see txt fail tühjaks. Viskan siia koodi, ehk oskate öelda millest see tuleb? Või on tegu mõne kurjamiga, kes faili ära kustutab? Hästi ei usuks.

<?php
$leht=$_GET['id'];
// 1     vision
// 2      HinnaVaatlus

//**************************************** statistika *************
if($leht=="vision.pri.ee"){$m="vision";}
if($leht=="foorum.hinnavaatlus.ee"){$m="hv";}

$fp=fopen("lehed.txt","r");      
$stat=fgets($fp);
fclose($fp);

$vv=unserialize($stat);
$mass=$vv;
$mass[$m]=$mass[$m]+1;

$save = serialize($mass);

$fail="lehed.txt";
$fp=fopen($fail,"w");   
if (flock($fp, LOCK_EX)) { // fail lukku
   fputs($fp,$save);
flock($fp, LOCK_UN); // lukust lahti
}
fclose($fp);
//************************************************************************
?>

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 05.05.2009 01:37:30 vasta tsitaadiga

See paistab kangesti selle probleemi nägu, mille jaoks kunagi ammu-ammu loodi andmebaasid, mis kogu selle failide lukustamise, avamise ja pööramise kasutaja eest peidetult ära teevad.

Muidugi tuleb kasuks ka enda harimine mitmesuguste concurrency probleemide osas... lukud kinni, lukud lahti, ootamine, kontrollid, transaktsioonide järjekorda seadmine... siis lootus, et nüüd viimaks kõik kenasti töötab... ja siis mõne aja pärast avastus, et mingitel kummalistel ja üliharva korduvatel juhtudel asi siiski feilib.

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 05.05.2009 11:31:29 vasta tsitaadiga

Selle asemel et üldist teooriat ajada võiks siiski üritada juhendada täpsemalt milles probleem ja kuidas lahendada icon_razz.gif Zone tasuta host näiteks baasituge jms ei paku vist eriti (sessiooni tuge isegi pole)

Põhiprobleemiks on hetkel siis see, et kui kaks kasutajat samal ajal lehte laevad ja kaks samal ajal töötavat php skripti üritavad faili näppida, on tulemuseks tühi fail. Koodis siin on küll flocki kasutatud, kuid natuke teisiti kui ma ise olen teinud, ning minul varem flocki kasutades probleemi pole tulnud.

Ise olen flock kasutanud sellises stiilis:

$sisu = file_get_contents('lehed.txt');//peaks siseselt oma lockimise asjad ära tegema kui üldse lugemisel vaja läheb
//muu kood siia
$f = fopen('lehed.txt', 'w');
flock($f, LOCK_EX);
fputs($f, "uus rida\n");
fclose($f);//fclose juba ise vabastab lockid

flock funktsioon on selline, mis minu teada jääb teise locki olemasolul ootama kuni teine lock vabastatakse (ootab kuni teine php skript kirjutamise lõpetab ja faili sulgeb)

Mida ise suudan välja pakkuda on see, et sa üritad olla jube agar ja locki ise vabastada, ning teed seda enne kui fail kettale kirjutatakse (flcose tehakse) ja seega tekib vahepealne limbo hetk, kus uus sisu pole kettal, aga locki ka peal pole.
Eemalda see flock($fp, LOCK_UN); sealt ära ja siis peaks kõik ilusti töötama, kuna fclose juba ise vabastabki locki, ainult et teeb seda õigel ajal, kui faili uus sisu on kettale jõudnud.

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 05.05.2009 12:58:09 vasta tsitaadiga

Tänud, proovin järgi.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  text statistika
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.