Copyright (c) 1999-2009 Christophe DAVID

Permission to use, copy, modify, and distribute this software and its documentation under the terms of the GNU eneral Public License is hereby granted. No representations are made about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

See the GNU General Public License.
Files / miscellaneous

CurrentVisitors.php

<?php if (!defined('PmWiki')) exit();

/*  Copyright 2005 Christophe David (www.christophedavid.org)
    This file is CurrentVisitors.php; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published
    by the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This script makes it easy to show how may visitors have been browsing
    your site (or a given group or a given page) during the n last seconds.

    To use this script, simply copy it into the cookbook/ directory
    and add the following line to config.php or a per-page/per-group
    customization file.

        include_once('cookbook/CurrentVisitors.php');
*/


################################################################################

SDV($MaximumNumberOfSecondsToConsiderAVisitorAsCurrent, 1800);
SDV($CurrentVisitorsDirectory, "$WorkDir/CurrentVisitors");

################################################################################
################################################################################
################################################################################

define(CURRENT_VISITORS, '1.11');

$NumberOfCurrentVisitors = 0;

if ($action == 'browse')
   {
   if (   (is_dir($CurrentVisitorsDirectory) == true)
       || (mkdirp($CurrentVisitorsDirectory) == true)
      )
      {
      # create a 0 byte file or update the timestamp of an existing one
      $FileName = $CurrentVisitorsDirectory . '/' . preg_replace('/[^0-9]/', '_', $_SERVER['REMOTE_ADDR']);
      touch($FileName);

      # cleanup too old files and count how many remain
      if (($DirectoryHandle = opendir($CurrentVisitorsDirectory)) == true)
         {
         $TimeNow = time();
         while (($file = readdir($DirectoryHandle)) == true)
            {
            if (is_dir($file) == false)
               {
               $FileFullPath = $CurrentVisitorsDirectory . '/' . $file;
               $FileStat     = stat($FileFullPath);
               $FileAge      = $TimeNow - $FileStat[9];
               if ($FileAge > $MaximumNumberOfSecondsToConsiderAVisitorAsCurrent)
                  {
                  unlink($FileFullPath);
                  }
               else
                  {
                  $NumberOfCurrentVisitors++;
                  }
               }
            }
         closedir($DirectoryHandle);
         }
      }
   }

Markup('CurrentVisitors', 'fulltext', "/\(:CurrentVisitors:\)/", $NumberOfCurrentVisitors);

################################################################################
?>
 
Files / miscellaneous

printer friendly view
PDF

   
Google
 
Web www.christophedavid.org