Skip to content

vtsykun/php-ext-counter

Repository files navigation

PHP atomic counter extension

Simple SysV semaphore counter. It will be automatically undone when the process terminates.

Supported platform

  • Linux (kernel > 2.1) (not Solaris)

Install

phpize
./configure
make
make install

Add extension=counterlock.so to your php.ini configuration

Install on CentOS and RHEL

/opt/remi/php71/root/usr/bin/phpize
./configure --with-php-config=/opt/remi/php71/root/usr/bin/php-config
make
make install
echo "extension=counterlock.so" > /etc/opt/remi/php71/php.d/20-counerlock.ini

Run test

phpize
./configure
make
make test

Example Usage

<?php

$res = counter_create(1863);
echo counter_value($res) . PHP_EOL;
counter_increment($res);
echo counter_value($res) . PHP_EOL;; 
counter_decrement($res);

/* Result
0
1

Provided function.

<?php

// Start of counterlock.

/**
 * Get or create a semaphore counter id
 * 
 * @param int $key
 * @param int $perm [optional] <p>
 * The semaphore permissions. Actually this value is
 * set only if the process finds it is the only process currently
 * attached to the semaphore.
 * </p>
 *
 * @return resource a positive counter identifier on success, or <b>FALSE</b> on
 * error.
 */
function counter_create ($key, $perm = 0666) {}

/**
 * Increment a counter
 * @param resource $resource <p>
 * <i>resource</i> is a resource, obtained from <b>counter_create</b>.
 * </p>
 * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
 */
function counter_increment ($resource) {}

/**
 * Increment a counter
 * @param resource $resource <p>
 * A resource handle as returned by
 * <b>counter_create</b>.
 * </p>
 * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
 */
function counter_decrement ($resource) {}

/**
 * Get counter value.
 * 
 * @param resource $resource <p>
 * A resource handle as returned by
 * <b>counter_create</b>.
 * </p>
 * @return integer|false <b>FALSE</b> on failure.
 */
function counter_value ($resource) {}

/**
 * Remove a System V semaphore for counter
 * @param resource $resource <p>
 * A semaphore resource identifier as returned
 * by <b>sem_get</b>.
 * </p>
 * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
 */
function counter_remove ($resource) {}

// End of counterlock.

About

PHP atomic counter C extension

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published