RE: Counter in php script

From: fbsd_user (fbsd_user_at_a1poweruser.com)
Date: 02/29/04

  • Next message: Oliver Fuchs: "Re: keybell off in rc.conf disables my keyboard in 5.1 release (solved)"
    To: "Peter Risdon" <peter@circlesquared.com>
    Date: Sun, 29 Feb 2004 10:01:23 -0500
    
    

    Thanks, a really great reply.
    Have some questions about the fine details.

    The counter file is an single line with any size numeric
    field starting in position 1?
    Like this, right?
    2004000000

    Does the file have to be an .txt file?

    What happens if the counter file is in use and locked?
    Does the second request pause until file is free?

    If the counter file has no path prefix, then it's looked for
    in the same location as the script, right?
    $counter_file = 'counter.php'

    -----Original Message-----
    From: owner-freebsd-questions@freebsd.org
    [mailto:owner-freebsd-questions@freebsd.org]On Behalf Of Peter
    Risdon
    Sent: Sunday, February 29, 2004 9:09 AM
    To: fbsd_user@a1poweruser.com
    Cc: freebsd-questions@FreeBSD. ORG
    Subject: Re: Counter in php script

    fbsd_user wrote:

    >Need to set the initial value for an counter and save it, then
    >bump the saved value by one every time the php script is executed.
    >This must be a very basic function, but not being an php
    >script coder my self this is all new to my.
    >
    >Can anyone provide sample code I can use to do this?
    >
    >
     From a user contribution to the php manual at
    http://www.php.net/manual/en/function.fopen.php

    - edit to suit and use at your own risk.

    PWR.

    |$counter_file = '/tmp/counter.txt';
    clearstatcache();
    ignore_user_abort(true); ## prevent refresh from aborting file
    operations and hosing file
    if (file_exists($counter_file)) {
       $fh = fopen($counter_file, 'r+');
       while(1) {
         if (flock($fh, LOCK_EX)) {
             #$buffer = chop(fgets($fh, 2));
             $buffer = chop(fread($fh, filesize($counter_file)));
             $buffer++;
             rewind($fh);
             fwrite($fh, $buffer);
             fflush($fh);
             ftruncate($fh, ftell($fh));
             flock($fh, LOCK_UN);
             break;
         }
       }
    }
    else {
       $fh = fopen($counter_file, 'w+');
       fwrite($fh, "1");
       $buffer="1";
    }
    fclose($fh);

    print "Count is $buffer";

    ?>|

    _______________________________________________
    freebsd-questions@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-questions
    To unsubscribe, send any mail to
    "freebsd-questions-unsubscribe@freebsd.org"

    _______________________________________________
    freebsd-questions@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-questions
    To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"


  • Next message: Oliver Fuchs: "Re: keybell off in rc.conf disables my keyboard in 5.1 release (solved)"