*/ class ParTCP_Counter { public $dataDir; public $baseDir; public function __construct( $dataDir ){ $dataDir = rtrim( $dataDir, '/' ); $this->dataDir = $dataDir; $this->baseDir = $dataDir; } public function set_base_dir( $baseDir ){ $baseDir = trim( $baseDir, '/' ); $this->baseDir = "{$this->dataDir}/{$baseDir}"; } public function increment( $counterId ){ $file = "{$this->baseDir}/counters/{$counterId}"; $dir = dirname( $file ); if ( ! file_exists( $dir ) ){ mkdir( $dir, 0755, TRUE ); } return file_put_contents( $file, '.', FILE_APPEND | LOCK_EX ); } public function get_value( $counterId ){ $file = "{$this->baseDir}/counters/{$counterId}"; return file_exists( $file ) ? filesize( $file ) : 0; } public function delete( $counterId ){ $file = "{$this->baseDir}/counters/{$counterId}"; return ! file_exists( $file ) || unlink( $file ); } } // end of file lib/counter.class.php