Seitenaufrufe zählen

Statistik macht ja Spaß. Daher hab ich nach einem Counter für DW gesucht und hier gefunden.

Verwendete DW Version

2009-12-25c "Lemming"

Eingefüge Dateien

counter.php

Verzeichnis /wikidir/data/pages/_views erstellen Unter /wikidir/inc/counter.php erzeugen. Inhalt entspricht nicht dem aus der Quelle, Nameraum Handling hab ich schon verbessert.

<?php
 
/* 
 * simulating file_put_contents() from PHP5
 * for PHP 4.3.9 (Centos 4.3)
 * http://tinymailto.com/oliver
 */
function file_put_contents_counter($file, $views) {
  $written = false;
  if( $fp_counter = fopen($file, 'w') ) {
    // lock before writting
    if (flock($fp_counter, LOCK_EX)) { 
      $written = fwrite($fp_counter, $views);
      flock($fp_counter, LOCK_UN);
    }
    fclose($fp_counter);
  }
  if($written === FALSE) {
    return 0;
  }
  else {
    return $written;
  }
}
 
global $ID,$ACT;
 
// local variables
$file = "";
$views = false;
$read_tries = 3;
$read_count = 0;
$written=0;
$write_tries = 3;
$write_count = 0;
 
//$file=realpath($conf['datadir']).'/_views/'.$ID;
//handle Namespaces correct, replace : to $
$file=realpath($conf['datadir']).'/_views/'.str_replace(array("\\","/",":"),array("$","$","$"),$ID);
 
if (file_exists($file)) {
  while ($views===FALSE) {
    $views=file_get_contents($file);
    if ($views===FALSE) {
      usleep(50000);
    }
    $read_count++;
    if($read_count > $read_tries) {
      $views = 0;
      break;
    }
  }
  $views = intval($views) + 1;
} else {
  $views=1;
}
 
if (($ACT == 'show') && ($INFO['exists'])) {
  while(!$written) {
    //php4
    //$written=file_put_contents_counter($file,$views);
    // for php5 use this line
    $written=file_put_contents($file,$views);
    if (!$written) {
      usleep(50000);
    }
    $write_count++;
    if($write_count > $write_tries) {
      break;
    }
  }
}
 
$fn.=" ($views Seiteabruf(e)) ";

Geänderte Dateien

/wikidir/inc/template.php

Suche:

  $fn = utf8_decodeFN($fn);
  $date = dformat($INFO['lastmod']);
 
  // print it
  if($INFO['exists']){

Dahinter einfügen:

    //Counter von http://wiki.erazor-zone.de/wiki:projects:php:dokuwiki:counter
    include('counter.php');
    //Ende Counter
 
wiki/mods/counter.txt (250 Seiteabruf(e)) · Zuletzt geändert: 2010/01/24 14:22 von Jan-Hendrik Bade
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki