login  Naam:   Wachtwoord: 
Registreer je!
 Forum

hits met txt bestand

Offline phpfreak - 29/03/2007 03:01
Avatar van phpfreakPHP beginner ik verveelde me wat en wou een hits script maken dat gebruikt maakt van een textbestand. Dit wou niet egt lukken (aangezien ik normaal nooit werk met functies als fopen, fread, fwrite) dus ben ik wat gaan neuzen in de scripts hier, zo stootte ik op volgend script:
http://www.site...amp;id=374
Dit wil egter ook niet werken, als ik het uitvoer, geraakt het tot 2 dan word het 13 dan 1214 dan 12131215 enz.. Zoals jullie al vermoedden is dit niet de bedoeling. Ik weet wel wat het doet, het zet gewoon alles achter elkaar in de textfile, maar hoe zorg ik dat, voor dat ik iets in die textfile steek, die leeggemaakt word of, dat als ik erin schrijf er niets anders meer in staat, zodat enkel de egte hits erin komen?
Groeten Bart

6 antwoorden

Gesponsorde links
Offline ThePope - 29/03/2007 08:35
Avatar van ThePope Nieuw lid gebruik voordat je wat naar het bestand schrijft een ftruncate(); 
Offline jeroentjuh - 29/03/2007 12:49
Avatar van jeroentjuh PHP ver gevorderde Bij het openen van het bestand met fopen, de tweede parameter de waarde 'wb' geven. Deze maakt het bestand dan gelijk leeg.

http://nl2.php.net/fopen
Offline svm - 29/03/2007 13:38 (laatste wijziging 29/03/2007 13:48)
Avatar van svm PHP ver gevorderde Ik heb over bestandssysteem een tutorial geschreven:
http://www.site...ndssysteem

Een scriptje (niet getest):
  1. <?
  2. $txt = "hits.log"; // de naam van het bestandje waar de hits inkomen
  3.  
  4. if(!is_file($txt)){ // als het bestandje niet bestaat
  5. $fp = fopen($txt, w); // aanmaken
  6. fwrite($fp, "1"); // het getal 1 erin zetten omdat nu de eerste bezoeker er is
  7. fclose($fp); // en natuurlijk sluiten
  8. }else{
  9. $hits = file_get_contents($txt); // inhoud van $txt opslaan
  10. $fp = fopen($txt, 'w'); // bestandje leeg maken
  11. fwrite($fp, ($hits + 1)); // bestandje de nieuwe hits inzetten
  12. fclose($fp); // afsluiten
  13. }
  14.  
  15. echo file_get_contents($txt); // het aantal hits (na de update) weergeven
  16. ?>



Edit:
Als je dat andere scriptje wilt gebruiken, probeer eens regel 6 van hits.php te wijzigen in:
$iHits = ($iOldHits + 1);
Offline Gerard - 29/03/2007 14:29
Avatar van Gerard Ouwe rakker
Citaat:
Bij het openen van het bestand met fopen, de tweede parameter de waarde 'wb' geven. Deze maakt het bestand dan gelijk leeg.
Vriendelijke vriend, de b staat voor binary. Ik denk dat hij dit toch echt ASCII wil wegschrijven :X
Offline phpfreak - 29/03/2007 14:37
Avatar van phpfreak PHP beginner Met die wb gaat het toch, maar svm gebruikt gewoon w dus dat maakt het ook leeg dan he
Offline Thomas - 30/03/2007 08:46
Avatar van Thomas Moderator *zucht*

Als je zo'n counter bestand hebt, moet je deze locken als je er zaken in gaat wijzigen. Wat gebeurt er als er twee processen semi-tegelijkertijd het bestand willen updaten? Dan krijg je of een PHP-error, of je teller wordt gereset...

vb: teller staat op 5.

proces A leest tellerbestand (5)
proces A leegt bestand voor schrijven
proces B lees tellerbestand (??? 0? foutmelding?)
proces A hoogt teller op en schrijft deze weg (6)
proces B (als deze nog geen error heeft opgeleverd) hoogt teller op naar ??? + 1 of reset deze op 1 (???+1 of 1) en schrijft deze weg (???+1 of 1)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.169s