[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * DBA-based CDB reader/writer 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 * http://www.gnu.org/copyleft/gpl.html 19 * 20 * @file 21 */ 22 23 /** 24 * Reader class which uses the DBA extension 25 */ 26 class CdbReaderDBA extends CdbReader { 27 public function __construct( $fileName ) { 28 $this->handle = dba_open( $fileName, 'r-', 'cdb' ); 29 if ( !$this->handle ) { 30 throw new CdbException( 'Unable to open CDB file "' . $fileName . '"' ); 31 } 32 } 33 34 public function close() { 35 if ( isset( $this->handle ) ) { 36 dba_close( $this->handle ); 37 } 38 unset( $this->handle ); 39 } 40 41 public function get( $key ) { 42 return dba_fetch( $key, $this->handle ); 43 } 44 } 45 46 /** 47 * Writer class which uses the DBA extension 48 */ 49 class CdbWriterDBA extends CdbWriter { 50 public function __construct( $fileName ) { 51 $this->realFileName = $fileName; 52 $this->tmpFileName = $fileName . '.tmp.' . mt_rand( 0, 0x7fffffff ); 53 $this->handle = dba_open( $this->tmpFileName, 'n', 'cdb_make' ); 54 if ( !$this->handle ) { 55 throw new CdbException( 'Unable to open CDB file for write "' . $fileName . '"' ); 56 } 57 } 58 59 public function set( $key, $value ) { 60 return dba_insert( $key, $value, $this->handle ); 61 } 62 63 public function close() { 64 if ( isset( $this->handle ) ) { 65 dba_close( $this->handle ); 66 } 67 if ( $this->isWindows() ) { 68 unlink( $this->realFileName ); 69 } 70 if ( !rename( $this->tmpFileName, $this->realFileName ) ) { 71 throw new CdbException( 'Unable to move the new CDB file into place.' ); 72 } 73 unset( $this->handle ); 74 } 75 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |